相关疑难解决方法(0)

防止MySQL重复插入时自动增加

使用MySQL 5.1.49,我正在尝试实现一个标记系统我遇到的问题是带有两列的表:id(autoincrement),tag(unique varchar) (InnoDB)

使用查询时,即使忽略插入INSERT IGNORE INTO tablename SET tag="whatever",自动增量id值也会增加.

通常这不会是一个问题,但我希望很多可能的尝试为这个特定的表插入重复项,这意味着我id的新行的字段的下一个值将跳得太多.

例如,我最终会得到一张表3行但不好id的表

1   | test
8   | testtext
678 | testtextt
Run Code Online (Sandbox Code Playgroud)

此外,如果我不这样做INSERT IGNORE并且只是定期INSERT INTO处理错误,则自动增量字段仍会增加,因此下一个真正的插入仍然是错误的自动增量.

如果有INSERT重复的行尝试,有没有办法停止自动增量?

正如我对MySQL 4.1的理解,这个值不会增加,但我想做的最后一件事是要么SELECT提前做很多语句来检查标签是否存在,或者更糟糕的是,降级我的MySQL版本.

mysql innodb insert duplicates auto-increment

37
推荐指数
4
解决办法
4万
查看次数

ON DUPLICATE KEY UPDATE的自动增量太多

我有一个带有列的基本表:

  • id(主要用于AI)
  • 名称(唯一)
  • 等等

如果唯一列不存在,则INSERT该行,否则更新行....

INSERT INTO pages (name, etc)
VALUES
  'bob',
  'randomness'
ON DUPLICATE KEY UPDATE
 name = VALUES(name),
 etc = VALUES(etc)
Run Code Online (Sandbox Code Playgroud)

问题是如果它执行UPDATE,id列上的auto_increment值会上升.因此,如果执行了大量UPDATES,则id auto_increment会通过屋顶.

显然这是一个错误:http://bugs.mysql.com/bug.php?id = 28871

...但我在mySQL 5.5.8上使用InnoDB共享主机.

其他几年前没有解决问题的人: 防止MYSQL重复插入时的自动增量以及 为什么MySQL自动增量会因失败的插入而增加?

关于修复的想法?我是否可能以某种方式错误地构建了数据库?

******编辑****:似乎在你的my.ini文件中添加innodb_autoinc_lock_mode = 0修复了问题,但我对共享主机有什么选择?

******编辑2******:好的,我认为我唯一的选择是改为MyISAM作为存储引擎.作为一个超级mySQL新手,我希望这不会导致很多问题.是吗?

mysql auto-increment on-duplicate-key

17
推荐指数
1
解决办法
1万
查看次数