MySQL 3.x 与 MySQL 5.x 资料库转换

小弟原本的资料库是在 MySQL 3.x 的环境下运行,最近遇到主机的升级,MySQL 版本升为 5.x,还原资料库之后确发现了 JSP 所捞出来的资料都变成了乱码,后来查询了一下之后,原来是资料库编码的问题。

MySQL 在 4.x 版本之后,加强了对多语系的支援,因此在在从旧版本的 MySQL 3.x 中汇入资料,就会发生语系的问题,所幸解决的方式不难,以下示范如何备份旧有资料库并还原到 MySQL 5.x 的环境。

备份资料库:

0001
root # mysqldump -u steven -p -h localhost project1 --opt > project1.sql

以上使用 --opt 指令是包含了 DROP 与 CREATE 指令,以确保之后的资料库能够完整的还原。

还原资料库:

0001
root # mysql -u steven -p -h localhost project1 < project1.sql

资料库还原之后,需要重新整资料库的编码格式,因为原本旧有的资料库是使用 big5 编码存入资料,而新版本的资料库预设会是以 UTF-8 来做编码,所以在还原后需再重新指今编码。

登入资料库:

0001
root # mysql -u steven -p -h localhost

修改编码格式:

0001
0002
0003
mysql> ALTER DATABASE project1 CHARACTER SET big5 COLLATE big5_chinese_ci;
Query OK, 0 rows affected (0.00 sec)
mysql> exit;

经过以上的资料库的 ALTER 之后,即可正常显示与插入 big5 字集。

另外因目前 UTF-8 的套件非常盛行,也可以把资料库预设连线编码模式改为 UTF-8,要修改预设连线编码,可修改 /etc/my.cnf 档案,在 [mysqld] 加入参数即可。

0001
0002
[mysqld]
default-character-set=utf8

修改完成之后,重新启动 MySQL。

0001
root # /etc/init.d/mysqld restart

06/29/2008

首页