mysql4.1資料轉換指南(轉)

post0發表於2007-08-09
mysql4.1資料轉換指南(轉)[@more@]

mysql 4.1增加了編碼的支援,所以在轉換舊資料的時候稍微麻煩一些,但只要注意以下幾點,基本沒問題的:

1、轉換之前一定要先把原有資料dump出來,一般原有資料都是gb2312編碼吧,dump命令如下:

mysqldump -u -p database –add-drop-table –extended-insert

–add-drop-table是為了匯入的時候省去建表環節,–extended-insert是為了防止在匯入的時候一個sql語句過大的情況,想想你的上千條記錄寫在一條sql語句中是多麼的恐怖。

這裡假定原有資料庫是gb2312編碼,需要轉換為utf8編碼,其它編碼之間的轉換類似。

2、修改dump出來的sql檔案,用Emeditor或iconv把檔案的編碼轉換為utf-8,注意最好不要那個什麼“Unicode Signature(BOM)”,因為mysql.exe不認的。再把檔案中的gbk_bin替換為utf8_general_ci,把gbk替換為 utf8,然後在檔案最前面加上

set names utf8;

帶上BOM,mysql不識別的錯誤大體如下:

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the ma

nual that corresponds to your MySQL server version for the right syntax to use n

ear ‘???

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */’ at line 1

3、重新建mysql庫,然後匯入備份的sql語句,匯入命令如下:

mysql -u -p database < dumpdata.sql

4、如果是以前匯出的檔案,匯入的時候遇到錯誤:

Got a packet bigger than ‘max_allowed_packet’ bytes

or

ERROR 1153 (08S01) at line 616: Got a packet bigger than ‘max_allowed_packet’ by

tes

就需要修改mysql的最大允許包大小了,編輯my.ini,在[mysqld]部分(不在這部分沒用)新增一句:

set-variable=max_allowed_packet=10485760

重啟mysql服務就可以了,我這裡設定的是大約10M。

到這裡資料匯入基本就完成了,接下來就是根據各個應用的不同來調整了,一般有的系統已經支援了,但還有的不支援,不過調整方法大概分以下幾類:

1、在資料庫連線後面加上

mysql_connect(….

mysql_query(”set names ‘utf8′”);

這種情況最多,比如Brim什麼的。

2、將語言檔案或模板檔案的編碼設定為utf-8,注意是直接把檔案編碼轉換了就可以,內容不用管,這樣的有phpwind, mantis。使用工具可以是iconv,在這裡可以下載。

iconv -f gb2312 -t utf-8 gb2312.html > utf-8.html

3、修改模板檔案,設定HTML中的

原先是gb2312編碼的系統多半需要改這個。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-939230/,如需轉載,請註明出處,否則將追究法律責任。

相關文章