此篇博主分享一次mysql问题排查,在mysql本版本下,运行一段时间,服务器某些业务表出现自增字段自行归0导致服务器设计该表的业务无法使用的问题。个人下来查阅网上众多资料,都没有找到出现该问题的原因。由于博主并不是DBA,同时也还没达到Mysql深度精通的境界,所有下面仅博主个人分析观点。

出现上诉问题的原因可能由一下几种:

    1.业务、开发或数据库管理人员其中的某人在查看表字段时候,不小心点到了取消自增主键的取消按钮;由于是生产环境,因此比较紧张,想要关掉该表的编辑页;关闭时,数据库连接工具(如navicat)提示保存、不保存、取消,个人感觉上面三个按钮意思非常的不清晰,因此可能出现误点保存按钮,此时就会将自增字段的值更改为0,从而导致后续业务所有新增操作均无法使用。

    2.Mysql5.6.11这个版本有bug,或在某些特定访问情况下,该值出现异常超出最大值后自动归0。

    3.业务程序使用的数据库访问工具有个bug、或者和Mysql该版本在特定情况下会发生冲突,导致了上诉结果。

以上讲完了自增字段归0可能出现的原因,下面贴出出现后程序的具体表现:   

解决办法:

1.首先使用数据库连接工具执行下面命令查阅当前该表的自增字段大小,然后和对比表中自增字段最大的值,如果该值大于后者,则业务会出现异常

SELECT auto_increment FROM information_schema.tables where table_schema="xxx_wcc_test" and table_name="wcc_xxx_buy";

 

mysql无法指定列为binary mysql无法设置自增_数据库

   

2.修改该自增值为当前表的最大值+1

alter table `wcc_xxxx_buy` auto_increment=38;

此时业务问题已解决,最后说下上诉过程还用到了一个命令来查看Mysql版本,顺便说下该字段bigint (20) 非null

mysql无法指定列为binary mysql无法设置自增_python_02

最后的最后,博主才疏识浅,如过哪位仁兄知道导致该问题的具体原因,请在评论区告知博主,博主感激不尽。