作者:陈海青(josonchen)
( http://www.chq.name)
( http://www.hhrz.org)
( http://junit.vicp.net)
日期:2007.11.16
摘要:
本文记录了从Mambo4.5 迁移到 Joomla! 1.0的过程,
主要介绍其中的数据库升级mysql4.0升级到mysql5.0
刚刚成功完成,一直进行到到凌晨4:00。
关键字:
Joomla! 1.0, 迁移,升级, Joomla,mambo,Mambo4.5,数据库,mysql,mysql4.0升级到mysql5.0。
--------------
源环境:
操作系统:unix - bsd
数据库:MySQL - 4.0.27:
数据库字符集:character set latin1
CMS:mambo/mambor
目标环境:
操作系统:windows
数据库:MySQL - 4.0.27:
数据库字符集: CHARACTER SET utf8
CMS:joomla
数据库管理工具:SQLyog、SQL Manager for MySQL
----
操作步骤:
1、从4.0中导出表结构,注意只有结构,可以使用数据库工具
mysqldump –no-data -uroot -p database > www.chq.name_struct.sql
2、从4.0中导出数据,只导出数据,不要结构。可以使用数据库工具
mysqldump –no-create-info=true –extended-insert=false -u root -p database > www.chq.name_data.sql
3、在mysql5上建库,注意字符集为utf8:
CREATE DATABASE 'mambo' DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
4、编辑www.chq.name_struct.sql文件,修改建表语句
-------------------------
windows:
1)将
) TYPE=MyISAM;
替换为
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
2)
将
) TYPE=HEAP.*
替换为
) ENGINE=MEMORY DEFAULT CHARSET=gbk;
-----------------------
unix:
用vi编辑struct.sql, 使用:命令
:%s/) TYPE=MyISAM;/) ENGINE=MyISAM DEFAULT CHARSET=gbk;/g
:%s/) TYPE=HEAP.*$/) ENGINE=MEMORY DEFAULT CHARSET=gbk;/g
5、在mysql5.0中依次导入 www.chq.name_struct.sql, www.chq.name_data.sql
大功告成!
6、错误处理
-----------------------------
1)Error: 2006 (CR_SERVER_GONE_ERROR)
Message: MySQL server has gone away
原因:查询语句太大
处理:
修改 my.cnf
将原语句:
[mysqld]
max_allowed_packet = 1M
[mysqldump]
max_allowed_packet=16M
替换为(或者其他的较大的值,依据你的硬件环境):
[mysqld]
max_allowed_packet = 100M
[mysqldump]
max_allowed_packet=160M
--------------------------
2)Error Code: 1064
Message:- You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version ......
Query:
/*Data for the table `mos_zoom_getid3_cache` */
insert into `mos_zoom_getid3_cache`(`filename`,`filesize`,......
原因:出现大量非法字符
处理:因为这个表并不重要,所以干脆利索:
truncate table
--------
关于mysql4.0、4.1、5.0的字符集
mysql 4.0及之前的版本,都是只支持一种字符集latin1,
从mysql 4.1起,支持众多的字符集,把多国语言字符集分的更加详细。
MySQL 4.1的字符集支持(Character Set Support)有两个方面:
字符集(Character set)和排序方式(Collation)。
对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。
查看系统的字符集和排序方式的设定可以通过下面的两条命令:
mysql> SHOW VARIABLES LIKE 'character_set_%';
--------
参考资料:
1:Problem importing mysql dump from ssh -Error 2006: MySQL server has gone away
网址: http://www.vbulletin.com/forum/
2:mysql4.0升级到mysql5(4.1),解决字符集问题
作者: 肖建彬 网址:http://www.xiaojb.com/archives/it/mysqludate.shtml