52design一台服务器被攻击,导致上面的BBS系统遭到破坏,原来使用Discuz跑在Windows下,用的是Mysql 5.0版本的数据库,在决定将BBS迁移到第三方的服务器之后,发现别人只提供Mysql 4.0.21版本的数据库支持,迁移时他们尝试直接将数据库文件拷贝到Mysql 4.0中,这样无法正常工作。
Mysql 4.0及之前的版本是不区分字符集的,全部是utf8,而Mysql4.1之后Mysql支持多语言、多字节。在原来的服务器上使用的GBK编码,直接拷到Mysql 4.0是肯定不能正常运行。
另外,由于Mysql 4.0不支持多语言导致许多汉字在做主键索引是会存在冲突(二进制一直),虽然中间将数据顺利生成了sql语句但不能顺利导入到Mysql 4.0中,几经尝试,发现了一个非常快捷的方式回复BBS的运行:
在PHPMyAdmin中,选中需要到处的数据库,选择“导出”菜单选中需要导出的表,在“Options”组合框的“SQL compatibility mode”选中“MYSQL40”,在“结构”组合框选中“Add IF NOT EXISTS”、“添加 AUTO_INCREMENT 值”、“请在表名及字段名使用引号”,在下面的“导出类型”中选择“REPLACE”,在“另存为文件”组合框中选中“ZIP压缩”,点击“执行”按钮将生成的SQL文件保存到硬盘上。并将这个ZIP文件解压缩,用UltraEdit之类的编辑器打开这个sql文件,检查是否是UTF8编码,如果是则转换成ASCII编码。
将这个SQL文件使用mysql命令程序导入到数据库中即可:mysql -uroot -ppass dbname <sqlfile.sql。
这样就可以完成将数据从Mysql 5.0中导入到Mysql 4.0中了。唯一缺陷是会丢失部分数据,原因前面说过在Mysql4.0中不支持多字节语言,许多汉字的二进制一样导致主键冲突。
[tags]Mysql[/tags]