找回密码
 立即注册
搜索
查看: 30|回复: 1

[其它] 将discuzX3.5论坛数据库引擎由默认Innodb转为MyISAM

[复制链接]
发表于 2025-1-13 15:02 | 显示全部楼层 |阅读模式
背景:我本地电脑的机械硬盘时不时出现坏扇区,mysql也有可能会随时无法启动。上次由于无法启动,导致损失了相当多的资料,也包括我的一些开发插件资料。刚开始以为我在18年前修复过一次,这次还可以修复坏扇区,但现在的硬盘容量比18年前翻了10倍还要多。而且dos都无法认识现在的硬件,无奈,放弃了。只能通过分区软件将坏扇区分成一个单独的分区……

于是一个想法便诞生了:将discuzX3.5论坛数据库引擎由默认Innodb转为MyISAM

操作步骤:
  1. 先导出最新的sql文件:aaa.sql(最好用zip压缩一份,用于备份)
  2. 替换导出的aaa.sql文件关键字:InnoDB为MyISAM,另外数据库名加_new(有些可能没有创建数据库的DDL,没关系,后面导入的时候手工创建一个数据库名称就是),再用工具导入修改后的aaa.sql(如果数据库_new没有,可以手工创建)
  3. 修改config\config_global.php:$_config['db'][1]['dbname'] = '数据库名_new';    $_config['db']['common']['engine'] = 'myisam'; 两行
  4. 运行网站,看是否正常。

当你看到这个贴子的时候,就表示我已经成功了。blush我嘚意的笑,我嘚意的笑……

dz官方要是看到这个贴子,不骂死我,好不容易让用户使用上高大上的Innodb引擎,又为之做了那么多的代码匹配,你居然又搞潮流倒退,我要拍死你……

如果数据量大些,只能写程序进行转换,贴上一个自用的:将论坛的数据库Innodb转换为MyISAM引擎。目前此程序已经成功转换本地、线上两个数据库。

使用方法也很简单:1、解压文件后,将文件放在论坛根目录      2、在浏览器地址栏中访问此文件:http://aaa.com/--engine--.php      3、执行完毕后,删掉此文件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
 楼主| 发表于 2025-1-14 16:44 | 显示全部楼层
今天2025.01.14测出使用MyISAM引擎问题了:
回复贴子时,不显示,又回复了同样的内容,报错,一看字段position为0。
赶紧测试一下线下的,快速回复是正常的,一刷新页面,新回复的贴子不见了。查看数据库,数据是存在的。

这下就明白了,position字段值为0时,不显示。为什么不会自动增长呢?

对比下dzx3.4与dzx3.5 的forum_post 表时,发现dzx3.4  position字段有auto_increment属性,但dzx3.5没有。汗。
ALTER TABLE `forum_post`
CHANGE `position` `position` int(10) unsigned NOT NULL AUTO_INCREMENT AFTER `replycredit`;
谁让我用了myisam引擎呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|学习笔记

GMT+8, 2025-2-5 14:40 , Processed in 0.027709 second(s), 14 queries , APCu On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表