数据库自增字段出错引起的故障排除手记

韦林 53 阅读

今日“秋天的杨树叶”发帖反馈无法回复帖子,
经测试,post表pid自增值为4294967296(2的32次方),达到INT的max值上限引起。
进入mysql尝试修改AUTO_INCREMENT值
命令行提示成功,但重新查询还是4294967296,无法生效,
百度查询多篇mysql自增值教程无果,
陷入困局。
删除主键重建?近300万条数据,风险太大!
先备份并下载数据库
在下载过程中想起MyISAM转InnoDB会不会突破主键约束?
利用工具将post表转为InnoDB,测试提示无法找到主键
重启mysql,清空缓存,成功!

这里要感谢 “秋天的杨树叶”和“酒泉红柳”两位网友,
其实“酒泉红柳”在7日就发出无法回复的反馈,
因内容表示会弹出敏感字符,以为是内容不合适,
就没往技术故障方面想,在此做出检讨。

全部回复

2
  1. 韦林 1 楼

    今日再次出现无法回复故障,经排查,position 自增值达到上限,
    删除主键,取消自增,全部重设为0后恢复

  2. 韦林 2 楼

    再次出现错误,最终解决方案,先删除position自增,删除主键,并删除position字段,删除tid主键,然后重建

    ALTER TABLE pre_forum_post ADD position INT(8) UNSIGNED NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY(tid, position);

    排序为pid递增再执行,否则会出现楼层错乱