MySQL自动增量列与不同的数据库有不同的行为

问题描述


我在 PHPMysqL 中有一个工作项目。 在其中我对所有自动增量列使用一列语法,如下所示 -
  CREATE TABLE `mytable` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,`sometext` int(11) NOT NULL
)

为了在我的整个项目中在这个表中插入记录,我使用以下语法 -

   INSERT INTO mytable(ID,sometext)
VALUES(0,'Sometext')

这工作正常。

但是当我复制相同的数据库和项目并且此代码停止工作时 所以我用下面的内容改变了我的插入

 INSERT INTO mytable( sometext)
VALUES( 'Sometext')

但这很奇怪......在以前的项目中,旧的语法工作正常,但对于新的,我必须在 100 个地方更改代码。 有人能告诉我新的 MysqL DB 有什么问题,它停止支持旧语法。

解决方法

不同之处可能在于您的新数据库服务器具有配置选项 sql_mode=NO_AUTO_VALUE_ON_ZERO。因此,只有 NULL 才会导致生成自动增量。

阅读 https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html 以获取有关 sql 模式如何影响您的数据库服务器的完整说明。

为避免更改代码,您可以更改服务器选项。