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

 更新时间:2024年08月21日 14:50:29   作者:?abc!  
这篇文章主要介绍了解决创建主键报错: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类型

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL索引下推的深入探索

    MySQL索引下推的深入探索

    这篇文章主要介绍了MySQL的索引下推,索引下推是为了解决在过滤条件时,可能导致大量的数据行被检索出来,但实际上只有很少的行满足WHERE子句中的所有条件的情况,需要的朋友可以参考下
    2022-07-07
  • 简单谈谈MySQL5.7 JSON格式检索

    简单谈谈MySQL5.7 JSON格式检索

    MySQL 5.7.7 labs版本开始InnoDB存储引擎已经原生支持JSON格式,该格式不是简单的BLOB类似的替换。下面我们来详细探讨下吧
    2017-01-01
  • CentOS7版本安装Mysql8.0.20版本数据库的详细教程

    CentOS7版本安装Mysql8.0.20版本数据库的详细教程

    这篇文章主要介绍了CentOS7版本安装Mysql8.0.20版本数据库的教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • MySQL清空数据表的方法实例与分析

    MySQL清空数据表的方法实例与分析

    这篇文章给大家详细介绍了MySQL清空数据表的方法,文中给出了实例代码,对大家学习使用MySQL具有一定的参考借鉴价值,有需要的可以参考借鉴,下面来一起看看吧。
    2016-10-10
  • DataGrip连接Mysql并创建数据库的方法实现

    DataGrip连接Mysql并创建数据库的方法实现

    本文主要介绍了DataGrip连接Mysql并创建数据库的方法实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Mysql开启慢SQL并分析原因

    Mysql开启慢SQL并分析原因

    今天小编就为大家分享一篇关于Mysql开启慢SQL并分析原因,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • MySQL 全文索引使用指南

    MySQL 全文索引使用指南

    在 MySQL 中,我们经常使用 WHERE 条件用于进行值的相等比较、范围过滤。然而,我们也会使用关键字进行搜索,这个基于搜索值与其他值的相关性来进行过滤。MySQL全文检索即用于这种场景。本篇将介绍如何使用全文检索。
    2021-05-05
  • Mysql利用group by分组排序

    Mysql利用group by分组排序

    这篇文章主要为大家详细介绍了Mysql利用group by分组排序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • mysql慢查询日志分析工具使用(pt-query-digest)

    mysql慢查询日志分析工具使用(pt-query-digest)

    这篇文章主要介绍了mysql慢查询日志分析工具使用(pt-query-digest),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • MySQL 数据库对服务器端光标的限制

    MySQL 数据库对服务器端光标的限制

    从MySQL 5.0.2开始,通过mysql_stmt_attr_set() C API函数实现了服务器端光标。服务器端光标允许在服务器端生成结果集,但不会将其传输到客户端,除非客户端请求这些行。
    2009-03-03

最新评论