Mysql2 :: Error:键“ PRIMARY”的条目“ 32012”重复

时间:2018-08-15 14:04:05

标签: mysql ruby-on-rails primary-key

我刚刚在一个使用MySQL的Rails应用程序中看到此错误。我们在数据库中有此行:

mysql> select * from user_notes where id='32012';
+-------+---------+------------+--------------------+---------------------+---------------------+
| id    | user_id | admin_user | comment            | created_at          | updated_at          |
+-------+---------+------------+--------------------+---------------------+---------------------+
| 32012 | 1517776 | foo        | ID: DIl4Zy7mgo9fQ0 | 2018-07-26 13:30:33 | 2018-07-26 13:30:33 |
+-------+---------+------------+--------------------+---------------------+---------------------+

然后,在,我们收到此错误:

Mysql2::Error: Duplicate entry '32012' for key 'PRIMARY':
INSERT INTO `user_notes` (`admin_user`, `comment`, `user_id`, `created_at`,
    `updated_at`) VALUES
('foo', 'ID: DIlKKFX2jLxh3p', 1517788, '2018-07-26 13:46:51', '2018-07-26 13:46:51')

因此,可以得出的结论是,由于某种奇怪的原因,尝试将新记录插入数据库中,该主键与使用前约16分钟插入的记录的主键相同。

将记录为32013(下一个)插入2018-07-26 13:54:24,所以很好。

我假设内部主键增量器在插入记录32012之后没有完成其工作,但是那怎么可能呢?任何提示表示赞赏!重要的是要提到这是一个孤立的事件。

仅供参考:user_notes如下:

CREATE TABLE `user_notes` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) DEFAULT NULL,
  `admin_user` varchar(255) DEFAULT NULL,
  `comment` text NOT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `index_user_notes_on_user_id` (`user_id`),
  KEY `index_user_notes_on_admin_user` (`admin_user`)
) ENGINE=InnoDB AUTO_INCREMENT=33082 DEFAULT CHARSET=utf8

1 个答案:

答案 0 :(得分:0)

似乎我们在这段时间里一直在进行一些与数据库相关的升级,因此,错误的发生肯定比肯定的多。我们无法查明错误的确切原因。