SELECT @@global.sql_mode, @@session.sql_mode;
SET SESSION sql_mode=CONCAT(@@sql_mode,',NO_AUTO_VALUE_ON_ZERO');
NO_AUTO_VALUE_ON_ZERO 影响AUTO_INCREMENT 列的处理。NULL通常,您通过插入或 来为该列生成下一个序列号0。 NO_AUTO_VALUE_ON_ZERO 抑制此行为,0以便仅NULL生成下一个序列号。
0如果已存储在表的AUTO_INCREMENT 列中, 则此模式会很有用。(0顺便说一句,不推荐存储。)例如,如果您使用mysqldump转储表然后重新加载它,MySQL 通常会在遇到0值时生成新的序列号,从而导致表的内容与原来的不同那被丢弃了。NO_AUTO_VALUE_ON_ZERO 在重新加载转储文件之前启用 可解决此问题。为此,mysqldump自动在其输出中包含一条启用 NO_AUTO_VALUE_ON_ZERO.