MySQL数据库某些字段只能读不能改修复记录

论坛数据库已经涨到了130M多,很庞大了,还好当初明智,在Access数据库涨到100M的时候更换了论坛程序和数据库,不然可要糟糕了.

刚刚将论坛程序升级到了Discuz!最新版本,发现一些老帖子中实现的Ubb代码很难看,看着不爽.于是,开始了MySQL模糊替换之旅,这个旅程走的不太顺利,不过还是胜利到达了终点.

用官方提供的Tools.php管理员工具进行帖子中的字符串替换,漫长的等待后,提示处理结果为0,上Dz官方询问,才知道不支持模糊替换.后来尝试自己写工具进行替换,因为不会写PHP,只能用易语言进行这个操作,Ubb代码不是固定的,用到了2个正则表达式.
[IMGS]images/yyface/([sS]*?).gif[/IMGS]
[EM([sS]*?)]

思路是把数据库的Posts表记录用计次循环的方法读出来,然后进行正则匹配替换,如有修改则更新回表的原有字段中.过了一会程序写完了,但在实际操作时候遇到了问题,遇到了大量更新失败的字段.紧接着数据库那个表就会损坏掉.很奇怪的问题.因为数据库的读写应用我做的不多,仔细检查我的程序代码后确定不是代码问题,想会不会因为易语言的mysql支持库有bug.呵呵.后将仔细检查失败的字段.在phpmyadmin和SQLyog Enterprise中都无法进行修改操作,可以读出字段,但无法修改.提示数据库有错误,尝试修复.

开始在网上寻找解决办法,用了很多修复的办法都没有效果,包括Mysql自带的myisamchk.exe都不行.并非所有字段都有问题,只是某一部分会这样.很奇怪的问题.屡试屡败,搞的我都要放弃了.后来终于想到了一个办法.也就是这个办法解决了问题.此次人物终于完成.

用Phpmyadmin将需要修改的表导出为*.sql.用文本编辑器去编辑这个sql文件,修改自己不想要的部分.我用正则替换掉了我不需要的ubb代码.保存文件时候注意文件编码,否则会乱码.因为我的数据库比较大,这一个sql文件就有40多M,所以没办法用Phpmyadmin导入回去.起初用SQLyog Enterprise导出来的备份进行修改,然后用SQLyog Enterprise导入也不行,SQLyog Enterprise会假死.用Phpmyadmin导出sql文件,修改后用SQLyog Enterprise导入,就没问题了,看到数据一点点的被导入,心情愉悦啊.进行了更新记录测试,字段也没问题了.高兴啊.

恢复更新数据库到论坛,结束.今天还是阴天,不时的下着雨,不过有阳光的时候下着雨,在下面淋感觉很爽哦.