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类型的

测试是否可以添加代码:
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类型


