主键为自增
MySQL 插入时值设置为0,而实际的结果却是该表的最大值
CREATE TABLE `test` (
`id` bigint NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
insert into test VALUES (0);
select * from test;
导致此结果的原因是,mysql的 sql_mode 策略导致的,默认情况下当ID是0或者null的时候,数据库会自动产生一个新的自增序列作为这条记录的ID。这就是我们插入0值ID记录时与期望不符原因。
select @@sql_mode;
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
如果想让自增列在只插入 0 的时候产生自增序列,就要提前设置mysql的sql_mode包括NO_AUTO_VALUE_ON_ZERO