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

為了今后wordpress數據庫備份方便,把數據庫默認的latin 1 轉換成了utf8

大致過程如下:

1.備份 http://www.sh18.org/blog/ 數據庫

2.用 EditPlus 打開 http://www.sh18.org/blog/備份的數據庫 文件,查找“DEFAULT CHARSET=latin1” 用“DEFAULT CHARSET=utf8”替換.

3.創建一個新的數據庫,用phpadmin進入界面后,

(1).點擊左邊你的數據庫名后,右上方會有“Operations/操作”按鈕,進入后最下面有“Collation:/整理: ”選項,選擇 相應的utf8后按“go/執行”確認【這個步驟是把數據庫默認編碼設置成utf8】

(2).點擊“Home /主目錄”按鈕 ,返回主界面 更改“MySQL connection collation: /collation (校勘)字符集”為utf8_general_ci 【這個步驟有什么用不知道,反正做了沒壞處】

參考文檔

http://yanfeng.org/blog/585/

http://voivo.de/blog/374.html

http://www.zuola.com/weblog/?p=355

然后導入前面備份的數據庫(修改過的,注意導入的時候選utf8)

4.更改WordPress程序中wp-includes/wp-db.php的文件:選擇在56行處添加

$this->query(”SET NAMES ‘utf8′ “);

復制語句時小心字體哦,我復制的代碼加入后報錯,原來那些>”‘什么的都不正確。

更改后的情況是:

}$this->query(”SET NAMES ‘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,在”桑林志“的”MySQL 4.1x 中文亂碼問題“中找到了解決方案。

1. 設置數據庫的”collation”為”utf8_general_ci”:因為在新的服務器中建立數據庫時,沒有指定其為utf-8,更沒設定collation,所以需要先設定數據庫的字符集。

執行命令:

alter database myblogcharacter set utf8;

然后再在”操作”或者數據庫PhpMyAdmin的登陸頁面中設定collation為”utf8_general_ci”。

2. 更改WordPress程序中wp-includes/wp-db.php的文件:我是選擇了在56行處,而不是44行處(桑林志的做法)加入了如下語句:

$this->query(”SET NAMES ‘utf8′”);

復制語句時小心字體哦,我復制的代碼加入后報錯,原來那些>”‘什么的都不正確。

再次登陸網站查看,終于一切正常!!!整個操作時間耗費了大概6個小時,主要是網上查找解答太費時間,而且在設定collation時麻煩不小,因為我原來的服務器竟然關閉了調整Collation的命令。顯示為:”使用鏈接表的額外特性尚未激活。要查出原因,請單擊此處。”,還好它默認為字符集為”UTF-8″不然估計我的數據庫是無論如何都不能恢復到更高版本的MySQL里了。

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗