|
创建主键报错
- 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类型
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
来源:https://www.jb51.net/database/326304t0o.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|