[問題] MySQL 4.0升級至4.1,有關utf8資料的問題

phpBB Installation & Usage Support
phpBB 2 安裝於各類型作業平台之問題討論;外掛問題,請到相關版面依發問格式發表!
(發表文章請按照公告格式發表,違者砍文)

版主: 版主管理群

版面規則
本區是討論關於 phpBB 2.0.X 架設安裝上的問題,只要有安裝任何外掛,請到外掛討論相關版面按照公告格式發表。
(發表文章請按照公告格式發表,違者砍文)
Loki
星球公民
星球公民
文章: 54
註冊時間: 2004-02-12 02:21

[問題] MySQL 4.0升級至4.1,有關utf8資料的問題

文章 Loki »

最近想把MySQL從4.0升級至4.1版
phpBB已經UTF-8化
但之前升級MySQL都一直失敗
因為換過去後有部份資料還是亂碼\r
現在是有找到解決辦法
沒有了編碼問題
反而是當我想要restore回去時
會出現 Bus error (core dumped) 的訊息\r
然後回去看資料庫會發現資料表少了一大半

先簡述一下我的作法好了
1. 先從原本的MySQL 4.0把資料庫dump出來
mysqldump -u root -p --opt --quote-names db_name > db_name.sql

2. 接著修改db_name.sql的內容
在開頭加入\r
SET NAMES utf8;
SET CHARACTER_SET_CLIENT=utf8;
SET CHARACTER_SET_RESULTS=utf8;
然後將每個table後面的 TYPE=MyISAM;
改成
ENGINE=MyISAM DEFAULT CHARSET=utf8;

3. 接著換成MySQL 4.1
先建一個新資料庫,校對為utf8_general_ci
再把資料restore回去\r
mysql -u root -p db_name < db_name.sql

如此一來亂碼的問題是解決了
但是restore的資料並不完全\r
像這樣子
圖檔
正常應該有30個table
但restore只剩下11個
其中像phpbb_posts_text還是空的 = =

請問應該要如何修正呢?
謝謝
●架設主機作業系統:FreeBSD 6.0-Release
●我安裝的程式:Apache 2.0.55 + PHP 4.4.1 + MySQL 4.1.15
●上網方式:學術網路
●我的 phpBB2 版本:phpBB 2.0.18
●我的網域:loki.ind.ntou.edu.tw
●我的 phpBB2 連結網址: http://loki.ind.ntou.edu.tw/~mac/forum/
flower
星球公民
星球公民
文章: 272
註冊時間: 2004-08-31 21:03
來自: 火星
聯繫:

文章 flower »

您可以在執行 mysql -u root -p db_name < db_name.sql
這步驟之前 先打開 db_name.sql

我想會產生 core dumped 導致沒有還原完全的原因是\r
有許多的 \'
如果您只是由 big5 轉成 utf8 一般是無法直接導入的 有許多的衝碼字

例如: 如果您有一個文章內容只有成功兩字.....那導出後 sql 裡面的那段應該是 '成功\\'

但這在導入時只會變成 '成功' 就沒有結尾的單引號

您要手動修改 把 '成功\\' 改成 '成功' 然後再導入\r
有這種情況的都必需要修正 通常是在 單引號的結尾部份比較會出問題

之前把把論壇內所有文章 (70000篇左右) 由 big5 轉換成 utf8 光修改這部份就花了一個小時 要改的地方還真不少..... 把這種情況都修正後 應該就能導入了
頭像
brentsu
星球公民
星球公民
文章: 232
註冊時間: 2004-08-23 09:08
來自: BNW 時尚資訊網
聯繫:

文章 brentsu »

看到要搞定 7 萬篇文章.... 看樣子我早點放棄之前安裝的【多國語系】的 MOD 是對的,乾脆一次就直接裝上 UTF-8 免除無窮後患....

嗯~~話也不能說得太早,搞不好改用 UTF-8 之後又會出啥問題,畢竟這次 2.0.18 是竹貓首次正式發佈,還有很長的路要走呢~~ phpBB 加油~~
※架設伺服器主機:Mac mini 1.5GHz, 1GB RAM x 三部
※架設主機作業系統:Mac OS X Server 10.6.6 Snow Leopard
※我的上網方式:固定制 ADSL 16M/8M、6 IP
※安裝的伺服器:Apache + php 5 + MySQL 5
※我的 phpBB2 版本:phpBB 3.0.x UTF-8 版
※BNW會議室網址: http://www.bnw.com.tw/conference/
右手
星球公民
星球公民
文章: 78
註冊時間: 2004-05-10 21:21

文章 右手 »

ultraEdit有多重檔案取代功能\r
不用開啟檔案一個一個改\r
看圖
不然用EmEditor也可以
EmEditor5可以開比較大的檔案
http://www.emeditor.com/jp/
●架設主機作業系統:Windows 2000 Pro
●我的上網方式:ADSL HINET2MB/512K浮動IP
●我安裝的程式:Apache HTTP Server 2.0.55 +PHP 4.4/5.0.5 + MySql4.0.26
●我的 phpBB2 版本:phpBB 2.0.17
●我的 phpBB2 連結網址
flower
星球公民
星球公民
文章: 272
註冊時間: 2004-08-31 21:03
來自: 火星
聯繫:

文章 flower »

嗯 我當初是用 vim 取代和修改的 平常用上手了 直接就想到利用這個
vim 可以轉換編碼為 utf8 也有 sql 的語法顏色 所以蠻好改的 單引號的部份有錯看顏色就知道
我在匯出和修改前 先把 wordlist 和 wordmatch 兩個資料表清空 那兩個佔用了一半的容量
刪除完大概還剩 70 mb 勉強還可以編輯......
關於 vim 的設定 您可以看下面的網頁: 點選此處
Loki
星球公民
星球公民
文章: 54
註冊時間: 2004-02-12 02:21

文章 Loki »

flower 寫:嗯 我當初是用 vim 取代和修改的 平常用上手了 直接就想到利用這個
vim 可以轉換編碼為 utf8 也有 sql 的語法顏色 所以蠻好改的 單引號的部份有錯看顏色就知道
我在匯出和修改前 先把 wordlist 和 wordmatch 兩個資料表清空 那兩個佔用了一半的容量
刪除完大概還剩 70 mb 勉強還可以編輯......
關於 vim 的設定 您可以看下面的網頁: 點選此處
不知是那個網頁好像寫錯了
還是vim又有改了
語系設定是 set enc=utf8 才對
而不是set ec=utf8
language utf8這行vim好像也不對
會回應 E197: Cannot set language to "utf8"
這樣子一來Windows下的vim介面會全是亂碼\r
若改成
lang mes zh_TW.UTF-8
這樣子vim的訊息就OK了
但介面還是亂碼\r

而設了set enc=utf8
在FreeBSD下看table的內容也還是亂碼(用putty連的)
不過該亂碼看起來不同了
是一堆怪字加<81><9d>等等的組合
不過這也許是FreeBSD的console沒設好吧\r
因為在Windows上用gvim是OK
再研究看看

順便再問一下
ultraEdit有支援SQL語法的高亮度顯示嗎?
我用的11版好像沒有
要另外掛入嗎?
●架設主機作業系統:FreeBSD 6.0-Release
●我安裝的程式:Apache 2.0.55 + PHP 4.4.1 + MySQL 4.1.15
●上網方式:學術網路
●我的 phpBB2 版本:phpBB 2.0.18
●我的網域:loki.ind.ntou.edu.tw
●我的 phpBB2 連結網址: http://loki.ind.ntou.edu.tw/~mac/forum/
右手
星球公民
星球公民
文章: 78
註冊時間: 2004-05-10 21:21

文章 右手 »

ultraEdit要加字表檔才支援高亮\r
這裡抓
圖檔
Loki
星球公民
星球公民
文章: 54
註冊時間: 2004-02-12 02:21

文章 Loki »

現在還有令我不解的是\r
若把dump出來的資料restore回MySQL 4.0沒有問題
剛才試了一次是OK的
但是restore至MySQL 4.1版一定會出狀況
這到底是為什麼呢?
●架設主機作業系統:FreeBSD 6.0-Release
●我安裝的程式:Apache 2.0.55 + PHP 4.4.1 + MySQL 4.1.15
●上網方式:學術網路
●我的 phpBB2 版本:phpBB 2.0.18
●我的網域:loki.ind.ntou.edu.tw
●我的 phpBB2 連結網址: http://loki.ind.ntou.edu.tw/~mac/forum/
右手
星球公民
星球公民
文章: 78
註冊時間: 2004-05-10 21:21

文章 右手 »

你dump出來的資料是不是沒有轉碼呢
●架設主機作業系統:Windows 2000 Pro
●我的上網方式:ADSL HINET2MB/512K浮動IP
●我安裝的程式:Apache HTTP Server 2.0.55 +PHP 4.4/5.0.5 + MySql4.0.26
●我的 phpBB2 版本:phpBB 2.0.17
●我的 phpBB2 連結網址
Loki
星球公民
星球公民
文章: 54
註冊時間: 2004-02-12 02:21

文章 Loki »

右手 寫:你dump出來的資料是不是沒有轉碼呢
我的資料原本是big5
是去年轉成utf8
轉成utf8之後在MySQL 4.0之間dump和restore都沒問題
但就是在MySQL 4.1有狀況
現在4.1上的編碼問題已經解決了
就剩core dumped這個部份
●架設主機作業系統:FreeBSD 6.0-Release
●我安裝的程式:Apache 2.0.55 + PHP 4.4.1 + MySQL 4.1.15
●上網方式:學術網路
●我的 phpBB2 版本:phpBB 2.0.18
●我的網域:loki.ind.ntou.edu.tw
●我的 phpBB2 連結網址: http://loki.ind.ntou.edu.tw/~mac/forum/
右手
星球公民
星球公民
文章: 78
註冊時間: 2004-05-10 21:21

文章 右手 »

那你能提供你dump出來的資料嗎
我主機上面有裝4.0.26 4.1 5.0.15
我幫你測試看看,不方便直接貼出來可以用PM的.
●架設主機作業系統:Windows 2000 Pro
●我的上網方式:ADSL HINET2MB/512K浮動IP
●我安裝的程式:Apache HTTP Server 2.0.55 +PHP 4.4/5.0.5 + MySql4.0.26
●我的 phpBB2 版本:phpBB 2.0.17
●我的 phpBB2 連結網址
Loki
星球公民
星球公民
文章: 54
註冊時間: 2004-02-12 02:21

文章 Loki »

今天又重新在別的機器上作了測試
因為有前輩指出會有core dumped這個訊息可能不是資料本身的問題
於是找了另一台機器
再安裝一次MySQL 4.1.15進行測試
發現幾乎是可以正常restore
但是又有新問題了
出現ERROR 1062 (23000) at line 446: Duplicate entry '?��憟踝?憟賣??�蝬���嚗��乩��閬��� for key 1
指有一個不能重覆資料的資料意圖輸入資料庫
但是奇怪的是
若我不修改sql檔而直接restore至MySQL 4.1
雖然是可以成功匯入\r
但編碼是錯的(當然)
而restore至MySQL 4.0當然也沒有問題
所以必須要在sql檔中加入一些的述敘才行 (SET NAMES utf8; 等等)
可是加了又會出狀況
唉…\r
真不知道該如何解決
●架設主機作業系統:FreeBSD 6.0-Release
●我安裝的程式:Apache 2.0.55 + PHP 4.4.1 + MySQL 4.1.15
●上網方式:學術網路
●我的 phpBB2 版本:phpBB 2.0.18
●我的網域:loki.ind.ntou.edu.tw
●我的 phpBB2 連結網址: http://loki.ind.ntou.edu.tw/~mac/forum/
Loki
星球公民
星球公民
文章: 54
註冊時間: 2004-02-12 02:21

文章 Loki »

右手 寫:那你能提供你dump出來的資料嗎
我主機上面有裝4.0.26 4.1 5.0.15
我幫你測試看看,不方便直接貼出來可以用PM的.
您好
我已經PM給您了
就請您幫我看一下
謝謝
●架設主機作業系統:FreeBSD 6.0-Release
●我安裝的程式:Apache 2.0.55 + PHP 4.4.1 + MySQL 4.1.15
●上網方式:學術網路
●我的 phpBB2 版本:phpBB 2.0.18
●我的網域:loki.ind.ntou.edu.tw
●我的 phpBB2 連結網址: http://loki.ind.ntou.edu.tw/~mac/forum/
Loki
星球公民
星球公民
文章: 54
註冊時間: 2004-02-12 02:21

文章 Loki »

這次的問題也許和資料本身有關係吧\r
因為剛才又試著把blog和cpg相簿的資料庫從MySQL 4.0 dump出來
再匯入MySQL 4.1
同樣是utf8的資料
用相同的方法
結果是正常的
但是phpBB匯入去就是有問題= =
●架設主機作業系統:FreeBSD 6.0-Release
●我安裝的程式:Apache 2.0.55 + PHP 4.4.1 + MySQL 4.1.15
●上網方式:學術網路
●我的 phpBB2 版本:phpBB 2.0.18
●我的網域:loki.ind.ntou.edu.tw
●我的 phpBB2 連結網址: http://loki.ind.ntou.edu.tw/~mac/forum/
shstw
星球普通子民
星球普通子民
文章: 13
註冊時間: 2003-06-04 15:04
聯繫:

mysql4.1在phpmyadmin下看到的中文字亂碼的解決方法

文章 shstw »

mysql4.1在phpmyadmin下看到的中文字亂碼的解決方法

目前僅在ununtu5.10測過(php5.05、mysql4.1.12、phpMyAdmin 2.6.4-pl1),其他平台請有需要的人測試,我想應該沒問題吧!因為這只是phpmyadmin的問題而已。

解決方法一、
不要裝phpmyadmin2.6以後的版本,改裝phpmyadmin2.5.7
只不過用舊一些的版本,心理不太舒服!

解決方法二、
我是用phpmyadmin2.6.4,不過有兩個地方要修改:

1.
在phpmyadmin/libaries/select_lang.lib.php
第171行,將'zhtw-big5' => array('zh[-_](tw|hk)|chinese traditional','chinese_traditional-big5', 'zh-TW') 註解掉
,在其下加入 'twbig5-utf-8'=> array('zh[-_](tw|hk)|chinese traditional','chinese_traditional-big5', 'zh-TW'),
主要就是把zhtw-big5改成twbig5-utf-8,因為phpmyadmin2.6遇到mysql4.1沒有看到utf-8就不理你,所以只好騙他嘍!


2.
在phpmyadmin/libaries/select_lang.lib.php
第240行,將'big5' => 'big5', 註解掉,在其下加入'big5' => 'latin1',
也就是將big5對應到latin1的意思!
第257行,將'utf-8' => 'utf-8', 註解掉,在其下加入'utf-8' => 'latin1',
也就是將utf-8對應到latin1的意思!

如下:

// MySQL charsets map
$mysql_charset_map = array(
//'big5' => 'big5',
'big5' => 'latin1',
'cp-866' => 'cp866',
....
....

//'utf-8' => 'utf8',/
'utf-8' => 'latin1',

注意導入資料庫時,編碼校對一定要選擇:

MySQL 連線校對:latin1 下的 latin1_general_ci
建立新資料庫 校對:latin1 下的 latin1_general_ci
主題已鎖定

回到「phpBB 2 安裝與使用」