我刚刚在一个使用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
答案 0 :(得分:0)
似乎我们在这段时间里一直在进行一些与数据库相关的升级,因此,错误的发生肯定比肯定的多。我们无法查明错误的确切原因。