InnoDB有很多良好的特点,比如事务支持、存储 过程、视图、行级锁定等,在并发很多的情况下,InnoDB的表现会比MyISAM优越,所以有时会将一些产品的数据库存储引擎修改为InnoDB,修改 起来其实比较简单,只需要执行:ALTER TABLE `表名` ENGINE = InnoDB;即可,但是在discuz X3.4中表pre_forum_post在转换时会报错,提示#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key,大意是自增字段必须定义成主键
### 3. 转换`pre_forum_post`表为InnoDB存储引擎
在将`pre_forum_post`表从MyISAM转换为InnoDB时,可能会遇到`#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key`错误。这是因为InnoDB要求自增字段必须是主键或唯一索引的一部分。
解决方法如下:
- **删除现有主键**:首先删除现有的联合主键。
ALTER TABLE pre_forum_post DROP PRIMARY KEY;
复制代码
- **重新创建主键**:将`position`字段作为主键的第一个字段。
ALTER TABLE pre_forum_post ADD PRIMARY KEY (position, tid);