mysql的auto_increment报错1467

本周一mysql生产数据库中发生了一个存储报错,由于具体信息没有显示错误,搞了很长时间,最后通过后台调用工具XXjob的打印日志发现错误编号1467,ERROR 1467 (HY000): Failed to read auto-increment value from storage engine,然后我们设置的自动增长值为int类型,已经超过最多的21亿多,导致不然自然增长,通过查看存储程序,以及java程序代码,未发现自增长列对其他有影响,直接将int类型改为bigint,然后重新调起存储,解决问题,后通过此次得知如下结论:
在MySQL数据库中,可在建表时可用“auto_increment=n”选项来指定一个自增的初始值。可用“alter table table_name auto_increment=n”命令来重设自增的起始值,可通过数据列的auto_increment属性来自动生成。当然在设置的时候Mysql会取数据表中auto_increment列的最大值 + 1与n中的较大者作为新的auto_increment值。 要注意自增长列的实际字段类型,是否超出长度。 Myql的auto_increment属性具有以下特性:具有auto_increment属性的数据列应该是一个正数序列,如果把该数据列声明为UNSIGNED,这样序列的编号个数可增加一倍。比如tinyint数据列的最大编号是127,如果加上UNSIGNED,那么最大编号变为255auto_increment数据列必须有唯一索引,以避免序号重复;必须具备NOT NULL属性 实际应用中发现,在delete掉某张innoDB表的全部数据并重启Mysql会导致该表的auto_increment列变为1。
tinyint
1 字节
有符号-128~127
无符号0-255
smallint
2 字节
有符号-32768~32767
无符号0-65535
mediumint
3 字节
有符号-8388608~8388607
无符号0-16777215
int
4 字节
有符号-2147483648~2147483647
无符号0-4294967295
bigint
8 字节
有符号-9223372036854775808~9223372036854775807
无符号0-18446744073709551615

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值