当前位置: 首页 > 图文教程 > 数据库 > MYSQL > MySQL 4.1数据库中数据转换注意事项

MYSQL
MySQL数据库中部分数据损坏恢复过程
教你怎样实现MySQL数据库双机热备份
MySQL数据库中关于网络安全的解决方案
最佳措施 全面解决MySQL网络安全问题
教你怎样在两台MySQL数据库间实现同步
忘记了 MySQL 的 root 密码
妙用触发器有效管理MySQL数据库
MYSQL5重置root密码
妙用触发器有效的管理 MySQL数据库
Mysql5写中文乱码问题解决
在MySQL中增添新用户权限的方法简介
教你维护MySQL安装的安全性和完整性
MySQL服务器安装完之后如何调节性能
MySQL出击企业级市场 “自立为王”尚早
MySQL 5.0 数据库的新特性的存储过程
通过MySQL内置全文检索实现中文的相关检索
MySQL中多表操作和批处理详细介绍
Oracle和MySQL、PostgreSQL特性对比
Sphinx+MySQL全文检索架构和安装过程
Mysql教程:教你为root用户指定一个目录

MYSQL 中的 MySQL 4.1数据库中数据转换注意事项


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 36 ::
收藏到网摘: n/a

mysql 4.1增加了编码的支持,所以在转换旧数据的时候稍微麻烦一些,但只要注意以下几点,基本没问题的:

1、转换之前一定要先把原有数据dump出来,一般原有数据都是gb2312编码吧,dump命令如下:

mysqldump -u -p database –add-drop-table –extended-insert

–add-drop-table是为了导入的时候省去建表环节,–extended-insert是为了防止在导入的时候一个sql语句过大的情况,想想你的上千条记录写在一条sql语句中是多么的恐怖。

这里假定原有数据库是gb2312编码,需要转换为utf8编码,其它编码之间的转换类似。

2、修改dump出来的sql文件,用Emeditor或iconv把文件的编码转换为utf-8,注意最好不要那个什么“Unicode Signature(BOM)”,因为mysql.exe不认的。再把文件中的gbk_bin替换为utf8_general_ci,把gbk替换为 utf8,然后在文件最前面加上set names utf8;

带上BOM,mysql不识别的错误大体如下:

ERROR 1064 (42000) at line 1: You have an error

in your SQL syntax; check the ma

nual that corresponds to your MySQL server version

for the right syntax to use n

ear ‘???

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_

SET_CLIENT */’ at line 1

3、重新建mysql库,然后导入备份的sql语句,导入命令如下:

mysql -u -p database < dumpdata.sql

4、如果是以前导出的文件,导入的时候遇到错误:

Got a packet bigger than ‘max_allowed_packet’ bytes

or

ERROR 1153 (08S01) at line 616: Got a packet

bigger than ‘max_allowed_packet’ bytes

就需要修改mysql的最大允许包大小了,编辑my.ini,在[mysqld]部分(不在这部分没用)添加一句:

set-variable=max_allowed_packet=10485760

重启mysql服务就可以了,我这里设置的是大约10MB。到这里数据导入基本就完成了,接下来就是根据各个应用的不同来调整了,一般有的系统已经支持了,但还有的不支持,不过调整方法大概分以下几类:

1、在数据库连接后面加上

mysql_connect(….

mysql_query(”set names ‘utf8′”);

这种情况最多,比如Brim什么的。

2、将语言文件或模板文件的编码设置为utf-8,注意是直接把文件编码转换了就可以,内容不用管,这样的有phpwind, mantis。使用工具可以是iconv,在这里可以下载。

iconv -f gb2312 -t utf-8 gb2312.html > utf-8.html

3、修改模板文件,设置HTML中的

 

原先是gb2312编码的系统多半需要改这个。