近來協助老師將以前的網站移轉到新機器,先描述一下歷史故事

以往升級 MySQL 時就是直接把 MySQL DB 內實體檔案 copy 到對應的目錄內,沒有用 phpMyAdmin or mysqldump 這二種方法

而這種方法在 MySQL 3.0 & MySQL 4.0 是 OK 的,但是從 4.1 以後就不能這樣做了

然而後來升級至 4.1 之後,從 phpMyAdmin 來看資料怎麼看都是亂碼,為了解決這問題找了無數網站的教學

此篇是在教學該怎麼把原本 MySQL 4.0 以 Big5 編碼的 Database 也可以成功倒入至 MySQL 4.1 以 Big5 編碼的 Database

我的環境是 FreeBSD 8.1 + MySQL 4.1.25 + phpMyAdmin 2.11.11.1

【先設定 MySQL 4.1.25 的環境】

首先 MySQL 是用 Ports 來裝,但是要先動一下手腳讓 MySQL 4.1.25 認得 Big5

要編輯 /usr/ports/databases/mysql41-server/Makefile,找到下面的地方,加入最後一行就可以了

CONFIGURE_ARGS= --localstatedir=/var/db/mysql \
                --without-debug \
                --without-readline \
                --without-libedit \
                --without-bench \
                --without-extra-tools \
                --with-libwrap \
                --with-mysqlfs \
                --with-vio \
                --with-low-memory \
                --with-comment='FreeBSD port: ${PKGNAME}' \
                --enable-thread-safe-client \
                --with-charset=big5

接下來開始安裝 MySQL

# make WITH_CHARSET=utf8 WITH_XCHARSET=all WITH_COLLATION=utf8_general_ci BUILD_OPTIMIZED=yes

# make install

# rehash

# mysql_install_db

# chown -R mysql /var/db/mysql

# vi /etc/rc.conf

在 rc.conf 加入 mysql_enable="YES" 後存檔離開,再啟動 MySQL

# /usr/local/etc/rc.d/mysql-server start

# mysqladmin -u root password 您的MySQL密碼

接下來我們要來新增一個用 Big5 編碼的 Database,假設 Database Name 就叫 Big5,當然你也可以從 phpMyAdmin 裡新增

# mysql -u root -p
Enter password: (輸入密碼)
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 115 to server version: 4.1.25

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create database `big5` default character set big5 collate big5_chinese_ci;
Query OK, 1 row affected (0.03 sec)

這是用 phpMyAdmin 新增的方式

到這邊為止,新的 MySQL 4.1 就準備到這邊

【從舊的 MySQL 3.0/4.0 倒出資料】

倒資料出來的指令很簡單,用 mysqldump 即可

# mysqldump -u root -p --default-character-set=big5 big5 > big5.sql

接下來我們要編輯 big5.sql,確認 Default Charset 為 Big5

我是用 Emeditor 開啟 big5.sql,在 big5.sql 最上面加入二行

SET NAMES 'big5';
SET CHARACTER SET 'big5';

另外將原本 TYPE=MyISAM; 取代成 TYPE=MyISAM DEFAULT CHARSET=big5;

存檔時請確認 Emeditor 的編碼為 Big5,接下來把這檔案放到新的 MySQL 4.1.25 的機器吧

【將資料倒入 MySQL 4.1.25】

倒回來沒有什麼難度,一行就可以搞定了

# mysql -u root -p --default-character-set=big5 big5 < big5.sql

若沒有問題的話,在 phpMyAdmin 裡面我們就可以看到中文囉!

近期再補充該如何將原來以 Big5 編碼的 Database 移轉成以 UTF-8 編碼的教學 : )

arrow
arrow
    全站熱搜

    Bojack 發表在 痞客邦 留言(0) 人氣()