我正在使用 INSERT IGNORE 插入 500 行,如果该行已经存在(基于唯一字段),那么它什么也不做,如果不存在,它会插入该行。
我的问题是说只有 10 不存在每次插入时自动增量仍然增加所以它增加了 500 所以我最终在我的 id 中有差距。我该如何阻止它?
我试过:
SET global innodb_autoinc_lock_mode = 0;
但是我得到了错误:
1238 - 变量“innodb_autoinc_lock_mode”是只读变量
我该如何更改?
最佳答案
根据 MySQL's documentation ,innodb_autoinc_lock_mode
不是动态变量,因此在 MySQL 运行时无法更改。
你要么必须在命令行中设置它
--innodb_autoinc_lock_mode=0
或者在配置文件(mysql.ini)中
innodb_autoinc_lock_mode=0
应该注意的是,您不应该(阅读:从不)依赖连续的 id 序列。回滚或失败的事务可能会导致间隙。
关于mysql - 如何停止对忽略的插入进行自动递增,这些插入不会对 MySQL 进行任何更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7563733/