我刚刚在一个使用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
,所以这很好。
我假设在插入记录之后,内部主键incrementor没有完成它的工作 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条答案
按热度按时间cbeh67ev1#
似乎我们一直在运行一些数据库相关的升级在这段时间,而错误更肯定是因为这个发生。我们还不能确定错误的确切原因。