当前位置:   article > 正文

MySQL-使用自增ID无法插入ID为0值的记录的问题分析_mysql不允许插入id为0的数据

mysql不允许插入id为0的数据

记录一次数据库备份还原过程中的问题,以便今后遇到该问题能迅速定位。

问题产生的背景
1、数据库中表使用的是自增ID
2、在项目开发过程中数据库分为开发库和生产库,由于业务逻辑的需要,在生产库中把其中一个表的一条记录的ID手动改成了0。
3、备份生产库导入开发库过程中

问题
1、项目运行后,发现数据出现了严重的偏差,一些关联查询的数据不对,一开始以为是备份数据库或者导入数据库过程中出现了问题,来来回回折腾了几次,问题依旧。
2、追寻出问题的数据,查询数据库,发现ID手动改为0的那条记录被插入到最后一条记录,当然ID也不是0了。查看备份的源文件,生成的insert语句中这条记录的ID确实是0。难道产生了幻觉。

原因分析
1、因为在数据库表中ID采用了自增ID策略。默认情况下当ID是0或者null的时候,数据库会自动产生一个新的自增序列作为这条记录的ID。这就是我们插入0值ID记录时与期望不符原因。

看一下官方解释以及解决方案
1、最权威的还是官网解释
https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sqlmode_no_auto_value_on_zero

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/815644
推荐阅读
相关标签
  

闽ICP备14008679号