mysqldump 的一些注意事項

最近在工作上常常遇到一些以前古人建立的資料庫編碼混亂的問題,通常都發生在 MySQL 資料庫新舊轉換上面。 MySQL 預設的語系是 latin1 ,但是以現在的情況而言,非英語系國家最適合的當然是 utf8 。

通常我喜歡用 phpMyAdmin 來倒出資料庫和還原,但是如果語系(編碼)沒設定好,那在 phpMyAdmin 裡面不管怎麼弄都會變成亂碼。這時候我們可以靠 mysqldump 指令來解決。

語法如下:

注意,-p後面緊接著密碼,不需要空格,其餘進階用法請 man mysqldump 。如果有編碼混亂的情況,可以先試著用:

把資料倒出來看看,再用文字編輯器(Notepad++)開啟,如果沒有變成亂碼的話,即可把

CREATE TABLE `table` (

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

的 latin1 都取代為 utf8 ,請且重新儲存為 utf8 編碼的檔案(無BOM),這樣就是一個 utf8 的完整 dump 檔了!

除了修改資料庫的連線問題之外,也可以修改 my.cnf

其中[mysqld]的設定內容修改為 utf8 ,可以把資料庫預設的編碼從 latin1 改為 utf8 ,至於 client 的內容則是預設的查詢條件。要不要改就看個人意願了(我個人偏好不做修改,而是從程式那邊的查詢下手)。

舉例而言,稍據規模的專案,幾乎都有 DB 的 Driver 可找,通常 Driver 內都有一個部份在做 prefetch ,在該區加入

這樣感覺就好多了!出來的文字編碼也不會錯了!當然,如果以後要再用 mysqldump 備份的話,記得指令要打完整

以防倒出來的編碼不小心又錯了。

Posted in DB
2 comments on “mysqldump 的一些注意事項
  1. john says:

    😀 感謝分享

1 Pings/Trackbacks for "mysqldump 的一些注意事項"
  1. […] 资料参考:http://blog.roga.tw/2008/11/05/1127 […]

Leave a Reply

Your email address will not be published.