创建主键报错:Incorrect column specifier for column ‘id‘

内容分享16小时前发布 tannpe
0 0 0

https://blog.csdn.net/yyuggjggg/article/details/120195487

创建主键报错:Incorrect column specifier for column ‘id’

mysql使用语句创建表将一个字段属性设置主键时,该字段的类型只能是int类型的,varchar类型的会报错

测试代码:

CREATE TABLE t_user(

id INT PRIMARY KEY AUTO_INCREMENT,

    — id VARCHAR(10) PRIMARY KEY AUTO_INCREMENT, — 会报错,这样写的话

    — 报错信息:Incorrect column specifier for column id

usernmae VARCHAR(10),

pwd VARCHAR(32),

sex VARCHAR(4),

age INT,

phone VARCHAR(18),

email VARCHAR(32),

idcard VARCHAR(32),

addr VARCHAR(32)

);

DROP TABLE IF EXISTS t_user;

非要使用varchar的话

但是可以通过在SQLyog里面通过右键改变表可以修改为varchar类型的

创建主键报错:Incorrect column specifier for column ‘id‘

测试是否可以添加代码:

INSERT INTO t_user VALUES( sasax , 张三 , 123456 , 男 ,29, 1515465 , szxZ@as.com , 1213231 , 北京路 );

/* 添加成功

1 queries executed, 1 success, 0 errors, 0 warnings

查询:insert into t_user values( sasax , 张三 , 123456 , 男 ,29, 1515465 , szxZ@as.com , 1213231 , 北京路 )

共 1 行受到影响

执行耗时  : 0 sec

传送时间  : 0 sec

总耗时      : 0 sec

*/

测试是否还可以自动增长:

结论:不能,如果将主机id设置为default或者是null都不能添加成功

测试代码:

INSERT INTO t_user VALUES(DEFAULT, 张三 , 123456 , 男 ,29, 1515465 , szxZ@as.com , 1213231 , 北京路 );

INSERT INTO t_user VALUES(NULL, 张三 , 123456 , 男 ,29, 1515465 , szxZ@as.com , 1213231 , 北京路 );

/* 报错

1 queries executed, 0 success, 1 errors, 0 warnings

查询:insert into t_user values(default, 张三 , 123456 , 男 ,29, 1515465 , szxZ@as.com , 1213231 , 北京路 )

错误代码: 1364

Field id doesn t have a default value

*/

INSERT INTO t_user VALUES( sas , 张三 , 123456 , 男 ,29, 1515465 , szxZ@as.com , 1213231 , 北京路 );

/* 成功

1 queries executed, 1 success, 0 errors, 0 warnings

查询:insert into t_user values( sas , 张三 , 123456 , 男 ,29, 1515465 , szxZ@as.com , 1213231 , 北京路 )

共 1 行受到影响

执行耗时  : 0 sec

传送时间  : 0 sec

总耗时      : 0 sec

*/

结论

主键id如果要设置为自增长,最好还是使用int类型

© 版权声明

相关文章

暂无评论

none
暂无评论...