TShopping

 找回密碼
 註冊
搜索
查看: 1729|回復: 3
打印 上一主題 下一主題

[CentOS] MySQL升級5.0與UTF-8之相關解決方法

[複製鏈接]
跳轉到指定樓層
1#
發表於 2010-6-15 12:18:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
 
Push to Facebook

從MySQL4.0升級至5.0。

首先把資料dump出來 。由於先前用4.0時我的資料是存成latin1,不管是Big5或是wordpress的UTF-8存進去後都是變成lantin1,所以dump出來後要用iconf或piconf把他轉成UTF-8,記得dump出來時要加上 --default-character-set=latin1
如果原先是Big5的資料,像我的Coppermine Photo Gallery,dump出來後就直接把Big5轉成UTF-8即可
#mysqldump -u帳號 -p 資料庫 > output.sql  --default-character-set=latin1
#piconv -f big5 -t utf8 output.sql >utf8.sql

如果原先是UTF-8的資料,像是wordpress,dump出來後要先轉成Big5後,再把他轉成UTF-8,因為原先dump出來的是偽裝成UTF-8的lantin1不是真正的UTF-8

#mysqldump -u帳號 -p  資料庫 >output.sql --default-character-set=latin1
#piconv -f utf8 -t big5 output.sql > big5.sql
#piconv -f big5 -t utf8 big5.sql >utf8.sql
接著MySQL5.0灌好後,MySQL的my.cnf設定檔內要加入以下設定

[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
default-collation=utf8_general_ci

但也有看到資料說[mysqld]那邊加上 default-character-set=utf8跟 default-collation=utf8_general_ci後,一些舊的使用Big5編碼的php程式,又沒有加入連資料庫時指定的編碼方式的相關code的話,那些程式就會爛掉,所以目前我是沒有加上那兩行。
接著建立空的資料庫準備把dump出來的資料import進去,SQL語法應該類似下面這樣,要加上
DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
CREATE DATABASE `abc` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

我是用phpMyAdmin建立資料庫的,建立時”校對”要選utf8_general_ci

再來就是把剛剛dump出來後的sql檔在import進去了,這裡有兩點要注意的。
1.剛剛dump出來的sql檔如果原先是Big5里面會有一些像是許功蓋這些字後面會多了一個”\“,記得用文字編輯器把他消掉
2.import進去時記得還要先修改一下dump出來的sql檔,在最前面加上

  1. SET NAMES utf8;
  2. SET CHARACTER_SET_CLIENT=utf8;
  3. SET CHARACTER_SET_RESULTS=utf8;
複製代碼


再來把每個資料表後面的

TYPE=MyISAM;
改成
ENGINE=MyISAM DEFAULT CHARSET=utf8;
  1. 使用 vi 時...可以使用取代的語法..將全部 latin1 的字眼全部改為 utf8
  2. :1,$ s/latin1/utf8/g
複製代碼

都改好後就可以把他import進去了
  1. #mysql -u帳號 -p 資料庫 < utf8.sql --default-character-set=utf8
複製代碼

不過以上實在有點麻煩,所以我把多餘的”/“消掉後,就直接用phpMyAdmin把他import進去了,import時記得文字編碼檔案要選utf8即可
順便記一下寫php時如是配合UTF-8的資料庫的話該注意,在真正送出query前要先加入以下三行

  1. mysql_query(”SET NAMES ‘utf8‘”);
  2. mysql_query(”SET CHARACTER_SET_CLIENT=utf8“);
  3. mysql_query(”SET CHARACTER_SET_RESULTS=utf8“);
複製代碼


檢查語系的SQL語法
show variables like “%character%”;

本文From: http://blog.leolo.cc/2006/02/06/134/
參考 : http://a-wei.net/archives/4

 

臉書網友討論
2#
發表於 2013-11-7 01:14:54 | 只看該作者
說的真有道理啊!

版主招募中

3#
發表於 2013-11-7 01:14:54 | 只看該作者
感謝版主  


4#
發表於 2013-11-7 01:14:54 | 只看該作者
慢慢來,呵呵  


*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-5-5 12:14 , Processed in 0.078103 second(s), 19 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表