mysql2::错误:键“primary”的条目“32012”重复

sg24os4d  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(386)

我刚刚在一个使用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
cbeh67ev

cbeh67ev1#

似乎我们一直在运行一些数据库相关的升级在这段时间,而错误更肯定是因为这个发生。我们还不能确定错误的确切原因。

相关问题