当一张表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来配置。