FAQ系列 | 添加自增列失败

简介: FAQ系列 | 添加自增列失败

0、导读

想往一个表里添加一个自增列做主键,居然失败报告无法读取,这是怎么回事?

1、问题描述

有位朋友在升级discuz论坛数据库时遇到问题了,想给一个表添加自增列做主键,结果发生下面的报错:

mysql> ALTER TABLE pre_common_credit_log ADD `logid` mediumint(8) unsigned NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (logid) ;


ERROR 1467 (HY000): Failed to read auto-increment value from storage engine

2、原因分析

从报错信息来看,第一反应是:数据表损坏了。不过,再仔细想想,肯定不是啊,否则报错也不是这个了,而是像下面这样的了:

1030 Got error -1 from storage engine

再仔细一想,更大的可能性是:表里的总数据量,超过了mediumint最大值所致。

让朋友把自增列数据类型改成int或者bigint,果真就好了。

3、其他建议

建议使用discuz的同学们可以考虑这么做:

  • 如果启用了抢楼功能,那么就把post相关的表继续保留使用MyISAM引擎。或者自己动手改造代码,把抢楼功能中的楼梯值用redis来存储;
  • 如果没有启用抢楼功能,那么就可以放心的把所有表引擎改成InnoDB了。

顺便,再次吐槽一下discuz的某些功能设计,比如把session表用HEAP引擎,其他表默认引擎还是MyISAM。不过,这并不影响discuz成为国内最优秀的论坛解决方案(没办法,没更好的了,占了先机)。

            </div>
相关文章
|
存储 缓存 网络协议
你只会用 Java Sockets?推荐 11 个开源的 Java Socket 框架
你只会用 Java Sockets?推荐 11 个开源的 Java Socket 框架
2212 0
|
消息中间件 搜索推荐 Java
消息中间件JMS介绍、入门demo与spring整合
消息中间件JMS介绍、入门demo与spring整合
581 87
消息中间件JMS介绍、入门demo与spring整合
|
机器学习/深度学习 Web App开发 人工智能
全球名校AI课程库(8)| Berkeley伯克利 · 全栈深度学习训练营课程『Full Stack Deep Learnin』
课程以实战为主,讲解了不同场景下应用深度学习解决问题的工具、过程和方法:从问题理解,方法选择、数据管理、选择 GPU 到 Web 部署、监控和再训练。
2544 1
全球名校AI课程库(8)| Berkeley伯克利 · 全栈深度学习训练营课程『Full Stack Deep Learnin』
|
Web App开发 Dart 前端开发
Flutter 第一个程序Hello World!
Flutter 第一个程序Hello World!
473 1
Flutter 第一个程序Hello World!
|
JavaScript 安全 前端开发
Vue如何读取cookie实现路由守卫(检查用户登录状态)
一般实现路由守卫,判断用户的登录状态使用token和cookie验证两种方法,这次项目后端是给我提供的cookie验证,写到这里就记录一下,希望能帮助到你们
949 0
Vue如何读取cookie实现路由守卫(检查用户登录状态)
|
存储 SQL 监控
规则引擎 | 学习笔记
快速学习 规则引擎
1774 0
规则引擎 | 学习笔记
|
资源调度 JavaScript 前端开发
Vue3项目从0-1项目(手把手教学)
Vue3项目从0-1项目(手把手教学)
453 0
Vue3项目从0-1项目(手把手教学)
|
关系型数据库 MySQL 物联网
❤️Windows10环境下Docker安装主从MySQL5.7数据库❤️
❤️Windows10环境下Docker安装主从MySQL5.7数据库❤️
542 0
❤️Windows10环境下Docker安装主从MySQL5.7数据库❤️
|
存储 设计模式 算法
有限状态机FSM
关于状态机,以前写过[用Go实现一个状态机](https://mp.weixin.qq.com/s?__biz=MzUzNzAzMTc3MA==&mid=2247484850&idx=1&sn=5ba31ff066ddeeedab27f9ca9f1b9b58&scene=21#wechat_redirect),只是讲述了如何控制状态的流转,理论上不能算作完整的状态机。
|
XML JSON 文字识别
Android 百度翻译API(详细步骤+源码)
Android 百度翻译API(详细步骤+源码)
1302 0
Android 百度翻译API(详细步骤+源码)