IT俱乐部 MySql 解决创建主键报错:Incorrect column specifier for column id问题

解决创建主键报错:Incorrect column specifier for column id问题

创建主键报错

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持IT俱乐部。

本文收集自网络,不代表IT俱乐部立场,转载请注明出处。https://www.2it.club/database/mysql/12836.html
上一篇
下一篇
联系我们

联系我们

在线咨询: QQ交谈

邮箱: 1120393934@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部