创建主键报错
Incorrect column specifier for column‘id’
mysql使用语句创建表将一个字段属性设置主键时,该字段的类型只能是int类型的,varchar类型的会报错
测试代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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类型的
测试是否可以添加代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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都不能添加成功
测试代码:
1 2 3 4 5 6 7 8 9 10 11 12 | 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 */ |
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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类型
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持IT俱乐部。