昨天花了一整天的時間在把主機資料庫及 PHP 程式的部份搬到 DreamHost 去。
由於 DreamHost 的 PHP 並沒有 iconv 及 mbstring 的 function ,但是有提供自行安裝 PHP 5 的步驟。
安裝前記得 Quota 一定要先設大一點,裝好之後 iconv 跟 mbstring 都有了,這樣需要 iconv 的程式才能正常執行。
再來最麻煩的部份是 MySQL 4.1,因為 MySQL 4.1 的資料編碼已經不再支援 Big5 ,只能用連線校對的方式,但是這樣對 Porting 並沒有幫助,只好手工做些修正。
目前我先處理 UTF-8 的部份,以 MovableType 為例,先用 mysqldump 原來主機上的資料給拿出來:
mysqldump --opt -hlocalhost -uroot -p mt > mt.sql
再來把 mt.sql 傳到 DreamHost 上去,準備做匯入的動作。
在匯入前要先注意的是「不要把連線校對改為 utf8 字元集」(如 utf8_general_ci),只要用預設的 latin1_swedish_ci 就可以了。這個部份因為我手賤先改了,結果讀資料庫出來卻是一堆 ? 問號。
(如下圖所示)
DreamHost 上的 mysql 連線指令已經很貼心的寫在他們的畫面上,所以照貼就可以了,並加入紅字的部份匯入資料庫就可以了。
mysql -u neo -p -h mt.neo.com.tw mt < mt.sql
這時匯入後再看畫面就是正常的,而且程式完全不用改。
但是付出的代價就是「phpMyAdmin 看到的字全部都是亂碼」。
關於這點,phpMyAdmin 亂碼的暫時替代解決方案請看下一篇。
6 comments On [DreamHost] MySQL 4.1 纏鬥篇
哇 ~ 真是太感謝了 …
剛好在移機到 DreamHost 的時候也遇到這樣子的問題
謝謝 Neo 提供解決方案 … 😀
目前我也是從自行架設的linux主機,把mt轉到外租的host去,新的主機也是mysql4.1,我使用mt的匯出功能,匯入新的host之後卻發生部分中文變亂碼,奇怪的是’許功蓋’都正常,反而像’勝’、’理’等字變成其他字,不像DreamHost用sql連線,不知是否可以建議有什麼解決方案,謝謝。
先檢查 MT 匯出的時候是不是「勝」、「理」就已經變其它字了。
您說 MySQL 4.1 的資料編碼已經不再支援 Big5
小弟認為是支援的, 因為不論是 MS-Windows 或 Linux 平台
小弟自己管理的主機, 都可以在 phpMyAdmin 下看到正常的繁體中文字
但是目前 DreamHost 小弟做不到
大大,小弟還是有些問題,就是還原起來會出現
/includes/functions.php on line 3319
這個是什麼意思?
我用的版本是vbb3.54
如果要匯出資料庫的話:
mysqldump –opt -hlocalhost -uXXX -p –default-character-set=latin1 dbname > db.sql
再用 Editplus 這類的編輯器選 utf8 編碼就能看到原始資料了。
若想更改為正確的 utf8 再匯入mysql,記得要把 sql 檔案內的 /*!40101 SET NAMES latin1 */; 的 latin1 改為 utf8。