mysql - 如何停止对忽略的插入进行自动递增,这些插入不会对 MySQL 进行任何更改?

标签 mysql sql

我正在使用 INSERT IGNORE 插入 500 行,如果该行已经存在(基于唯一字段),那么它什么也不做,如果不存在,它会插入该行。

我的问题是说只有 10 不存在每次插入时自动增量仍然增加所以它增加了 500 所以我最终在我的 id 中有差距。我该如何阻止它?

我试过:

SET global innodb_autoinc_lock_mode = 0;

但是我得到了错误:

1238 - 变量“innodb_autoinc_lock_mode”是只读变量

我该如何更改?

最佳答案

根据 MySQL's documentationinnodb_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/

相关文章:

sql - 如何使用SQL计算树中值的总和

mysql - SQL 查询中的复杂计算

java - 仪表盘应用

mysql - 高效删除重复行

php - 如何计算 mysql-rows 之间的差异,有点不同

mysql - sql中返回查询值的子查询?

mysql - 选择在sql中出现N次的列的值

mysql - 解释查询返回不同结果

sql - 如何在不使用子查询的情况下从连接表中获取计数的直方图?

sql - 存储过程在 7 年后随机停止工作