【发布时间】:2015-11-27 06:36:10
【问题描述】:
我在tbl 中有这个主键列:
`id` INT(5) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY
当我运行下面的查询时,会插入零而不是下一个自动递增编号:
INSERT INTO `tbl` (id, col1, ...) VALUES (DEFAULT(id), "value 1", ...)
有趣的是,这种行为是最近才出现的,这让我想知道我可能更改了什么设置导致了这种情况。
我首先考虑的是NO_AUTO_VALUE_ON_ZERO。我已经在配置文件的sql_mode中添加了这个,现在是这样的:sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_VALUE_ON_ZERO
。
我知道当DEFAULT(id)被NULL替换时,自动编号按预期生成;但就像现在一样,我的应用程序生成的是前者而不是后者。
我的问题是:
是否有可能允许
DEFAULT(id)生成 下一个汽车号码?应用程序环境中的其他哪些更改可能导致此问题?
我问这些是因为这种行为(插入零)直到最近才出现。
【问题讨论】:
-
为什么需要DEFAULT(id)??您不能省略它,以便该字段将获得自动增量值吗?
-
你用的是什么mysql版本?
-
@user3571366:我可以省略,但这需要对应用程序进行大量修改。如果我能避免它,那就更好了。
-
@ChetanAmeta:MySQL 版本是 5.6.23-log - MySQL 社区服务器 (GPL)
-
我意识到这种行为会根据 SQL 选项而改变,不确定是哪一个,但
insert into table values (DEFAULT)在某些选项中插入零,并为其他选项插入 1(或下一个 AI 值)。奇怪。
标签: mysql auto-increment