伺服器的mysql狀態如下:
Server version: 5.0.18-standard-log
Protocol version: 10
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1
這樣的編碼在備份和恢複的時候會有問題,因此做了如下測試來保證其正確:
1. 恢複到原資料庫,恢複後編碼不變,仍全是latin1。
- 通過背景worpress database backup 外掛程式備份資料;
- 建立新資料庫,此時編碼仍全是latin1;
- 使用mysql> \. backup.sql 進行恢複,blog瀏覽顯示正常,編碼仍全是latin1;
- 插入新資料,瀏覽正常;
- 插入資料後再次備份,再次使用1、2、3恢複,正常。
2. 恢複到原資料庫,恢複後編碼變為server和database編碼是utf8,client和conn編碼是latin1。
- 通過背景worpress database backup 外掛程式備份資料;
- 建立新資料庫,此時編碼仍全是latin1;
- 修改backup.sql,在前面增加
SET CHARACTER_SET_DATABASE = 'utf8';
SET CHARACTER_SET_SERVER = 'utf8';
兩行;
- 使用mysql> \. backup.sql 進行恢複,blog瀏覽顯示正常,編碼變為server和database編碼是utf8,client和conn編碼是latin1;
- 插入新資料,瀏覽正常;
- 插入資料後再次備份,再次使用1、2、3恢複,瀏覽正常。
3. 恢複到另外一個資料庫(目的資料庫是4.1.18-nt,window安裝時選擇了多語言,服務端預設utf8,狀態如下)。
Server version: 4.1.18-nt
Protocol version: 10
Server characterset: utf8
Db characterset: utf8
Client characterset: latin1
Conn. characterset: latin1
- 通過 mysql> mysqldump -u ID -p -h hostname.samuelchen.net --default-character-set=latin1
-set-charset=utf8 --skip-opt database_name> backup.sql 備份資料;
- 建立新資料庫,server和database編碼是utf8,client和conn編碼是latin1;
- 修改backup.sql,在最前面增加 SET NAMES 'utf8';
- 使用mysql> \. backup.sql 進行恢複,blog瀏覽顯示正常,編碼變為server和database編碼是utf8,client和conn編碼是latin1;
- 插入新資料,正常;
- 插入資料後再次備份,再次恢複,正常。
- 恢複到1,2所示的latin1資料庫,無須修伽,正常。