西安網站建設,西安建網站,選擇心海網絡!

談談MySQL數據庫恢復編碼轉換問題

時間: 2012-05-22 13:27 / 作者:西安建網站/來源:西安網站開發
談談MySQL數據庫恢復編碼轉換問題
為了今后wordpress數據庫備份方便,把數據庫默認的latin1轉換成了utf8
大致過程如下:
1.備份//www.sh18.org/blog/數據庫
2.用EditPlus打開//www.sh18.org/blog/備份的數據庫文件,查找“DEFAULTCHARSET=latin1”用“DEFAULTCHARSET=utf8”替換.
3.創建一個新的數據庫,用phpadmin進入界面后,
(1).點擊左邊你的數據庫名后,右上方會有“Operations/操作”按鈕,進入后最下面有“Collation:/整理:”選項,選擇相應的utf8后按“go/執行”確認【這個步驟是把數據庫默認編碼設置成utf8】
(2).點擊“Home/主目錄”按鈕,返回主界面更改“MySQLconnectioncollation:/collation(???字符集”為utf8_general_ci【這個步驟有什么用不知道,反正做了沒壞處】
參考文檔
//yanfeng.org/blog/585/
//voivo.de/blog/374.html
//www.zuola.com/weblog/?p=355
然后導入前面備份的數據庫(修改過的,注意導入的時候選utf8)
4.更改WordPress程序中wp-includes/wp-db.php的文件:選擇在56行處添加
 
$this->query(”SETNAMES‘utf8′“);
 
復制語句時小心字體哦,我復制的代碼加入后報錯,原來那些>”‘什么的都不正確。
更改后的情況是:
 
}
$this->query(”SETNAMES‘utf8′“);
$this->select($dbname);
}
 
5.更改wp安裝目錄下的wp-config.php文件,把里面數據庫相應的參數修改為新的數據庫名字。
6.然后登陸www.sh18.org/blog基本正常,發現文章的中文分類名出現“??”字符,進入后臺,重新更改分類后一切正常.
7.發新貼看是否一切正常。。。。。
8.待測試。。。。
因為流量關系,為網站做了個鏡像站點,等待流量快超標的時候做個域名轉向來緩解壓力。在新的服務器上安裝了Wordpress后,開始進行數據庫操作:
1.備份原來網站的數據庫:操作很簡單,進入PhpMyAdmin后選擇導出,在表單選擇框里選擇全部。選擇”另存為文件”中的”gzip壓縮”,點擊”執行”便會讓你保存到本地電腦中了。
2.恢復備份數據庫到新的服務器中:進入新服務
器的PhpMyAdmin,(因為已經在這里建立了Wordpress,所以已經存在一個新的數據庫了),在”結構”中選擇所有表單,然后在”選中項”中
選擇”刪除”,原有的數據庫清空。然后在”SQL”中點擊”瀏覽”選擇剛才備份的數據庫文件,點擊”執行”即可。
可在這個時候出現了問題:總是說什么超出了Memory,或者說超過了30秒的限制,無法正常導入。導入數據庫文件大小限制一般為2M,我的備份文件不過才800多KB,為什么不行呢?后來明白,可能是新的服務器連接速度有些慢,所以在進行導入時,總是超過了時間限制。解決辦法:備份數據庫時,分幾次備份不同的表單,而不是一次重復全部,就這樣重復1,2兩個步驟三次,總算把數據庫正常導入了。
3.站內鏈接調整:因為數據庫相同,當然網站里所有站內鏈接也會和原來的相同,全部指向的還是原來的服務器地址。在PhpMyAdmin里選擇數據庫中的”wp_options“表單,點擊”瀏覽”然后按”option_name”排列主鍵順序,找到”option_name”鍵值為”siteurl”一項,點擊”編輯”按鈕,把里面的原來網站鏈接地址改為新的。然后找到”home”一項,同樣編輯把鏈接改成新的網址。
所有數據庫操作完成,
登陸網站查看,一下子傻了,除了我在側邊欄里寫的自我簡介那幾個字是正常漢字,其它全以”?”顯示。難道字符設置不對?不可能啊數據庫是原來的,當然字符
設置也是原來的”utf-8″。上網找答案,原來以前MySQL版本為4.0的轉到4.1或者更高版本時,會出現亂碼。上服務器的說明中查看,原來老的服
務器MySQL版本為4.0,而新的服務器版本為5.0,暈哦,可真先進。繼續google,在”桑林志“的”MySQL4.1x中文亂碼問題“中找到了解決方案。
1.設置數據庫的”collation”為”utf8_general_ci”:因為在新的服務器中建立數據庫時,沒有指定其為utf-8,更沒設定collation,所以需要先設定數據庫的字符集。
執行命令:
 
alterdatabasemyblog
charactersetutf8;
 
然后再在”操作”或者數據庫PhpMyAdmin的登陸頁面中設定collation為”utf8_general_ci”。
2.更改WordPress程序中wp-includes/wp-db.php的文件:我是選擇了在56行處,而不是44行處(桑林志的做法)加入了如下語句:
 
$this->query(”SETNAMES‘utf8′”);
 
復制語句時小心字體哦,我復制的代碼加入后報錯,原來那些>”‘什么的都不正確。
再次登陸網站查看,終于一切正常?。?!整個操作時間耗費了大概6個小時,主要是網上查找解答太費時間,而且在設定collation時麻煩不小,因為我原來的服務器竟然關閉了調整Collation的命令。顯示為:”使用鏈接表的額外特性尚未激活。要查出原因,請單擊此處。”,還好它默認為字符集為”UTF-8″不然估計我的數據庫是無論如何都不能恢復到更高版本的MySQL里了。
 
------分隔線----------------------------
------分隔線----------------------------