2010年6月17日 星期四

MySQL4.x 升級成 MySQL5.1 的步驟

1、先從 4.0 匯出表格欄位:
指令:mysqldump -d -Q -e --opt -uroot -p db> db_nd.sql

参数:
-d, --no-data No row information.
不dump数据

-Q, --quote-names Quote table and column names with backticks (`).
将所有的表名都用`tablesname`括起来(注:那不是单引号,而是反引号,就是1旁边那个符号)

-e, --extended-insert Allows utilization of the new, much faster INSERT syntax.
扩展插入,将多条数据捆绑备份,可大幅度提高插入效率.

--opt Same as --add-drop-table, --add-locks, --create-options, --quick,
--extended-insert, --lock-tables, --set-charset, and --disable-keys. Enabled by default, disable with --skip-opt.

这是一些dump时option,建议使用

2、複製資料庫資料
2.1請先停掉4.0和5.0的數據庫,再將資料複製到 5.0底下。
2.2啟動5.0的數據庫。

將4.0的MySQL 資料庫資料,直接複制到5.1底下。但是由於字元的關系,複製過來的資料char 和varchar的欄位,會少一半,為了解決這個問題,第1步所匯出的表格欄位型態,就會派上用場了。

3、 把已經在5.1底下的資料全部匯出,只匯出資料,不匯出表格。
指令:mysqldump -t -e -uroot -p db > db_nt.sql

参数:
-t, --no-create-info Don't write table creation info.
不dump表信息

-e, --extended-insert Allows utilization of the new, much faster INSERT syntax.
扩展插入,将多条数据捆绑备份,可大幅度提高插入效率.

4、用vi編輯 db_nd.sql, 在一開始加入 set names 'big5';

5、重新匯入 db_nd.sql,db_nt.sql
指令:mysql -uroot -p db < db_nd.sql
mysql -uroot -p db < db_nt.sql

mysql 4.0及之前的版本,都是只支持一种字符集latin1,从mysql 4.1起,支持众多的字符集,比如gbk,utf8(非utf-8)等。
gbk,utf8等多字节字符集的存储也发生了变化,比如latin1下,汉字字长是2,在gbk或utf8下,汉字字长就是1。也就是说原来varchar(32)只能存16个汉字,现在能保存32个了。

沒有留言:

張貼留言