近來協助老師將以前的網站移轉到新機器,先描述一下歷史故事
以往升級 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 編碼的教學 : )