程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 談談MySQL數據庫恢復編碼轉換問題

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

編輯:關於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 myblog
character 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裡了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved