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