[心得] 與MySQL 4.1的奮戰
發表於 : 2005-11-28, 21:29
這兩天都在作utf8的資料在MySQL 4.0轉換至4.1的測試
因為MySQL 4.1對utf8的支援較完整
但也在版本轉換上產生編碼的問題
昨天經過一番的測試後是解決了編碼問題
但是卻發生restore不完全的狀況
會出現bus erros (core dumped)的錯誤訊息
於是回去檢查了一下sql
花了一小時的時間去修正table中一些跳脫字元的問題
但還是無解
今天又重新在別的機器上作了測試
因為有前輩指出core dumped這個訊息可能不是資料本身有問題
(而且編輯器上的顏色不一定準)
於是找了另一台機器
再安裝一次MySQL 4.1.15進行測試
發現幾乎是可以正常restore
但是又有新問題了
因為MySQL 4.1要對各table指定連線校對
因此必須在從MySQL 4.0 dump出來的sql檔中加入一些敘述
才能讓MySQL 4.1知道你的資料庫的正常編碼為何
所以我在sql檔開頭的部份加入
然後把各table的 TYPE=MyISAM; 改為 ENGINE=MyISAM DEFAULT CHARSET=utf8;
但是卻出現Duplicate entry的問題
指有一個不能重覆資料的資料意圖輸入資料庫
但是奇怪的是
若我不修改sql檔而直接restore至MySQL 4.1
動作是OK的
但編碼是錯的(當然)
所以必須要加入上述的述敘才行
可是加了又會出狀況
唉…
還真是惱人呀
再研究看看
因為MySQL 4.1對utf8的支援較完整
但也在版本轉換上產生編碼的問題
昨天經過一番的測試後是解決了編碼問題
但是卻發生restore不完全的狀況
會出現bus erros (core dumped)的錯誤訊息
於是回去檢查了一下sql
花了一小時的時間去修正table中一些跳脫字元的問題
但還是無解
今天又重新在別的機器上作了測試
因為有前輩指出core dumped這個訊息可能不是資料本身有問題
(而且編輯器上的顏色不一定準)
於是找了另一台機器
再安裝一次MySQL 4.1.15進行測試
發現幾乎是可以正常restore
但是又有新問題了
因為MySQL 4.1要對各table指定連線校對
因此必須在從MySQL 4.0 dump出來的sql檔中加入一些敘述
才能讓MySQL 4.1知道你的資料庫的正常編碼為何
所以我在sql檔開頭的部份加入
代碼: 選擇全部
SET NAMES utf8;
SET CHARACTER_SET_CLIENT=utf8;
SET CHARACTER_SET_RESULTS=utf8;
但是卻出現Duplicate entry的問題
指有一個不能重覆資料的資料意圖輸入資料庫
但是奇怪的是
若我不修改sql檔而直接restore至MySQL 4.1
動作是OK的
但編碼是錯的(當然)
所以必須要加入上述的述敘才行
可是加了又會出狀況
唉…
還真是惱人呀
再研究看看