问题描述
我在 PHP 和 MysqL 中有一个工作项目。 在其中我对所有自动增量列使用一列语法,如下所示 -
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 模式如何影响您的数据库服务器的完整说明。
为避免更改代码,您可以更改服务器选项。