1.discuz 3.2 转INNODB的时候,是不是可以把所有表都转成INNODB,或者是要表留住哪几个表?
2.那个x3.1 的innodb补丁,能用于discuz 3.2吗?
===========
导出并替换discuz数据库中的MYISAM为INNODB
- mysqldump -u root -p'password' centos > centos_table.sql
2、替换centos_table.sql里的MyISAM为INNODB
- sed -i 's/MyISAM/INNODB/g' centos_table.sql
不用保留任何表,discuz 3.2中 MYISAM 的表可以全转为INNODB
因为:forum_postposition 表已经在3.2中取消,common_session表直接使用memory 为引擎
之后,清空原表,尝试导入INNODB数据库的文件
mysql -u root -p'password' centos < centos_table.sql
导入数据库过程有两个表结构有bug
举例: line 1169: Incorrect table definition; there can be only one auto column and it must be defined as a key
解决方法:把auto column 的列单独定义为一个key就可以解决,比如 KEY gpmid(gpmid)
所以
修改前:
CREATE TABLE `pre_common_member_grouppm` (
`uid` mediumint(8) unsigned NOT NULL DEFAULT '0',
`gpmid` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
`status` tinyint(1) NOT NULL DEFAULT '0',
`dateline` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`uid`,`gpmid`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
修改后:
CREATE TABLE `pre_common_member_grouppm` (
`uid` mediumint(8) unsigned NOT NULL DEFAULT '0',
`gpmid` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
`status` tinyint(1) NOT NULL DEFAULT '0',
`dateline` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`uid`,`gpmid`),
KEY gpmid(gpmid)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
另一个表修改雷同
之后,再次尝试导入INNODB数据库的文件
mysql -u root -p'password' centos < centos_table.sql
完成
|