该问题出现不是首次了,做个笔记备忘。
string(98) "SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '16777215' for key 'PRIMARY'" string(57) "INSERT INTO `xxx` (uid,tid) VALUES (2922427,7453062)"
之前我遇到这个主键冲突都是用 insert ignore
或者是 repalce into
,但是对于上述情况却不好使,卡在这个16777215
这块已经不是第一次,之前该表因为某个漏洞被人注入过,删除了很多数据,在恢复了数据之后,该表就出现了问题,普通修复无效,我导出其全部数据导入新的临时表,然后又更换表名,以取代老表,之前是解决了,但是现在这个问题又出现了,而且还是这个主键值。
坑了爹!一看建表语句,发现自己想多了,看来对这个数字还不敏感!该主键为mediumint
也就是说其最大值为16777215
,晚上把主键的类型修改成int
。
改表的时候可以通过监控Rows_read
来看进度。
嗨,老铁,欢迎来到我的博客!
如果觉得我的内容还不错的话,可以关注下我在 segmentfault.com 上的直播。我主要从事 PHP 和 Java 方面的开发,《深入 PHP 内核》作者之一。
[视频直播] PHP 进阶之路 - 亿级 pv 网站架构的技术细节与套路 直播中我将毫无保留的分享我这六年的全部工作经验和踩坑的故事,以及会穿插着一些面试中的 考点、难点、加分点 !