mysql 4.1 数据转换指南

日期: 2008-06-17 来源:TechTarget中国

  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’ by
tes



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


set-variable=max_allowed_packet=10485760



  重启mysql服务就可以了,我这里设置的是大约10M。


  到这里数据导入基本就完成了,接下来就是根据各个应用的不同来调整了,一般有的系统已经支持了,但还有的不支持,不过调整方法大概分以下几类:


  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中的


<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />



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

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐

  • Sybase开发和维护必须熟知的日志知识

    Log和数据库的Data一样,需要存放在数据库设备上,可以将Log和Data存放在同一设备上,也可以分开存放。一般来说,应该将一个数据库的Data和Log存放在不同的数据库设备上。

  • 使用安全的方式来运行数据库服务器

    启动和停止数据库缺省情况下,任何用户都可以在正在运行的服务器上启动其它数据库。-gd 选项可用于限制用户使用此功能,只允许有特定级别的访问权限的用户使用。

  • SQL Server灾难恢复:重创历史性数据

    作为一个数据库管理员和顾问,我见到许多的数据库只存储当前的数据快照,而不是数据在其生命周期中发生变化的每个历史时期的数据行。在大多数情况下,这对于数据库来说……

  • 如何终止数据库恢复过程

    当某一正常运行的大事务(例如:update、delete操作)被终止,且重新启动server后,运行该事务的数据库处于恢复状态,如果恢复时出现异常,如何终止恢复过程呢?