從XOOPS到DRUPAL到WORDPRESS
早已犯過多少次關於資料庫編碼的錯誤
前天晚上看了wordpress的資料庫
當場噴出一口鮮血
哇咧 我是大豬頭
先把環境描述一下
DREAMHOST虛擬主機
wordpress是用dreamhost內建的一鍵安裝 2.3版
把中文檔上傳變中文版
PHP & MYSQL 皆為dreamhost內附最新的版本
首先把所有文章在WP管理介面匯出一份XML檔 預防萬一
接下來要把資料庫DUMP出來
使用SSH連線到虛擬主機
接下來是關鍵
參考大部分的文章我下了這樣的命令
mysqldump -u XXX -p --default-character-set=latin1 XXX > XXX.sql
出現錯誤 殘念
我改下
mysqldump -u XXX -p --default-character-set=latin1 --host=X.X.X.X XXX > XXX.sql
依然錯誤
繼續改下
mysqldump -u XXX -p -default-character-set=latin1 --host=X.X.X.X XXX > XXX.sql
把--
改成-
居然成功了 詭異
很高興的把檔案下載回來
雪特 只有結構沒有資料
這時開始思考三條路
1.安裝一個自己的myphpadmin 改設定來備份latin1的資料庫
2.安裝WP的備份外掛插件 聽說可以
3.整個站摧毀重來 把XML倒回來即可
大家都知道ZMAN是個超級大懶人
這三條路應該都不會採行
經過跟酷學園團隊幾位大師請教和努力吵谷哥大神(GOOGLE)
今天早上我下了這樣的命令
mysqldump -u XXX -p --host=X.X.X.X XXX > XXX.sql -default-character-set=latin1
錯誤 快抓狂了
決定再試一次就放棄
mysqldump -u XXX -p --host=X.X.X.X XXX > XXX.sql --default-character-set=latin1
OH YA! 成功了 居然把-
改成--
又正常了 詭異
把檔案下載回來 資料結構都有 而且沒亂碼
打開你愛用的好一點的編輯器(別用WINDOWS附的任何編輯器)
使用 搜尋 替換 逐一詢問
把 latin1 全都置換成 utf8
另存新檔成 UNIX UTF8 的格式
這時連線到DREAMHOST 新建一個資料庫
先把utf8_general_ci指定好
然後把另存的新檔倒進去這個新資料庫
因為懶和怕下命令又出現靈異現象
所以我是直接用myphpadmin倒
接下來編輯wp-config.php
把資料庫設定指向新的資料庫
同時指定編碼
define('DB_NAME', 'XXXXX');
define('DB_USER', 'XXXXX');
define('DB_PASSWORD', 'XXXXXX');
define('DB_HOST', 'XXXXXX');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', 'utf8_general_ci');
(當然你也可以用’utf8_unicord_ci’ 我是喜歡快一點)
OK 這就是你現在看到的結果
一切正常