Mysql中插入自增主键为0时的坑

当一张表tbl的主键id为自增主键时,执行INSERT INTO tbl (id) VALUES (0)时,可能在表中找不到id=0的数据。这都是sql-mode参数惹的祸。当sql-mode中不含NO_AUTO_VALUE_ON_ZERO这个模式时,插入为0的数据时,会把id自动递增后插入。如,当前id最大值是5的话,执行插入id为0的语句后,就会得到id=6的数据。想要解决这个问题就需要重新设置一下sql-mode。

临时设置方式如下:

先用select @@sql_mode;查询一下当前的模式有哪些,然后在最后追加NO_AUTO_VALUE_ON_ZERO即可,设置语句如下:
SET @@sql_mode='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO'

长久设置要在my.ini里找到sql-mode,在后面添加NO_AUTO_VALUE_ON_ZERO来配置。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值