转换discuz X2.5表引擎为InnoDB
来源:互联网 发布:友邦旺旺群发软件 编辑:程序博客网 时间:2024/06/05 03:50
几乎所有PHP MySQL的开源产品中数据库都是采用MyISAM存储引擎,即使和交易相关的也不例外,这应该是从查询性能以及安装环境考虑的。InnoDB是为处理巨大数据量时的最大性能设计,在数据量少并发小的情况下MySAM优于INNODB,但是大数据量以及高并发写入等会导致MySIAM力不从心。InnoDB有很多良好的特点,比如事务支持、存储过程、视图、行级锁定等,在并发很多的情况下,InnoDB的表现会比MyISAM优越,所以有时会将一些产品的数据库存储引擎修改为InnoDB,修改起来其实比较简单,只需要执行:ALTER TABLE `表名` ENGINE = InnoDB;即可,但是在discuzX2.5中表pre_forum_post在转换时会报错,提示#1075 - Incorrect tabledefinition; there can be only one auto column and it must bedefined as a key,大意是自增字段必须定义成主键,查看了一下
pre_forum_post表可以看到自增字段position已经是主键(和tid作为联合主键),有些资料提到对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引,其实这也不完全正确,其实也可以作为联合索引,只是该字段必须是索引的第一个字段,例如表pre_forum_post设置联合主键使用命令PRIMARY KEY(`tid`,`position`)如果设置索引时使用PRIMARY KEY(`position`,`tid`)问题就解决了,解决方案是重建联合索引,
执行ALTER TABLE pre_forum_post DROPPRIMARY KEY ,ADD PRIMARY KEY ( position, tid ) ;
然后再执行ALTER TABLE `pre_forum_post`ENGINE = InnoDB
这样就没有错误了,是不是很简单呢。
- 转换discuz X2.5表引擎为InnoDB
- 转换discuz X2.5表引擎为InnoDB
- Discuz! X2/X2.5 插件制…
- discuz x2 判断是否为论坛首…
- 批量转换引擎为innodb
- discuz x2.5 转移重装过程
- Discuz X2.5 修改在线人数方…
- Discuz x2.5 单页制作的教程
- Discuz! NT 到 Discuz! X2.5 转换程序
- 整合discuz X2.5后用户免激活设置
- Discuz x2.5单页制作的教程
- discuz X2.5论坛数据搬家完美…
- discuz x2.5插件开发傻瓜图文…
- 解读Discuz! X2.5全新架构&nb…
- Discuz! X2.5安装插件出现:…
- Discuz! X2.5 R20130201
- Discuz!NT to Discuz!X2.5论坛转换工具for Access/MSSQL通用版
- Discuz数据库引擎转换
- Symfony框架的搭建
- redis,--->key-value存储系统
- 为PHP增加mongodb扩展模块
- 在线支付接口详解
- 使用php发送电子邮件(phpmailer)
- 转换discuz X2.5表引擎为InnoDB
- 使用Snoopy进行模拟登陆、采集
- 交换机和路由器的关系
- 框架zend framework 的研究实例
- 串口超时
- fsockopen函数被禁用的解决方案
- MySQL大数据量的导入与导出
- 使用PHP对文件进行压缩解压(zip)
- mysql导入数据的一种有效方法:loa…