创建主键报错
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类型
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论