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