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

首頁