我正在运行我的 ruby 脚本以加载到 mysql。它有一个错误:
Mysql::Error: Duplicate entry '4444281482' for key 'PRIMARY'
我的主键是自动递增 ID (Big-INT)。我使用屏幕在具有不同数据的多个终端中运行脚本,以加载到同一个表中。这个问题以前从未发生过,但是当它发生时,不同终端中的所有脚本都可能会遇到该问题。数据集不同。这似乎是随机发生的。 可能是什么原因? 为什么自增字段会重复?
最佳答案
您提到您正在使用不同的数据从不同的终端运行脚本。根据MySQL manual ,并假设您的引擎是 InnoDB,因为每个事务都针对 AUTO_INCREMENT
列插入不同数量的行,引擎可能不知道将提前检索多少行。这可能可以解释为什么您会收到重复的 key 错误。通过在语句末尾使用表级锁,一次只能执行一个 INSERT
语句,并且自动递增数字的生成不会交错。
关于mysql:主键的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12079974/