详细讲解MySQL4.1数据如何转换

如题所述


MySQL4.1增加了编码的支持,所以在转换旧数据的时候稍微麻烦一些,但只要注意以下几点,基本没问题的: 1、转换之前一定要先把原有数据dump出来,一般原有数据都是gb2312编码吧,dump命令如下: MySQLdump -u -p database _add-drop-table _extended-inser




MySQL4.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 manual that corresponds to your
MySQL server version for the right syntax to use near ‘???
/*!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服务就可以了,我这里设置的是大约10MB。

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

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

mysql_connect(?.
mysql_query(”set names ‘utf8′”);

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

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

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



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

【相关文章】

MySQL手动安装方法与中文解决方案
MySQL数据库中用GRANT语句增添新用户
MySQL数据库中部分数据损坏恢复过程
温馨提示:内容为网友见解,仅供参考
无其他回答

详细讲解MySQL4.1数据如何转换
MySQL4.1增加了编码的支持,所以在转换旧数据的时候稍微麻烦一些,但只要注意以下几点,基本没问题的: 1、转换之前一定要先把原有数据dump出来,一般原有数据都是gb2312编码吧,dump命令如下: MySQLdump -u -p database _add-drop-table _extended-inser MySQL4.1增加了编码的支持,所以在转换旧数...

MYSQL4.1怎么升级成5.0? - 技术问答
1) 首先备份MySQL4.1上的所有数据库,包含系统库和非系统库 2) 卸载掉MySQL4.1版本,并清除掉MySQL数据自身的系统库(库名MySQL)3) 新安装MySQL5.0版本,并启动之 4) 从主控上,对这个MySQL服务器做检测与修复,重建所有MySQL帐号 5) 将原先的用户数据库,覆盖回去,即可运行 其中有几点需要...

mysql数据库一个汉字到底占几个字节
简单来讲:mysql=4.1并且你的机器是64位的,同时你的操作系统也是64位的,使用了utf8编码,那么中文和英文是一样的。最重要的判断依据是 1字节=8位还是16位

mysql prepare 语法
在MySQL4.1之前,数据传输依赖于文本协议,每次查询都需要执行语句解析,结果也需转换为字符串。引入prepare后,交互分为两步:第一步,客户端发送预处理SQL(含“?”)至服务器,服务器解析并缓存语句,返回stmt id;第二步,客户端通过stmt id和参数调用执行,无需再次发送完整SQL。使用prepare语句步骤...

MYSQL4.0.x 版本 与 MySQL4.1.x\/5.x 数据库结构是不一样吗
首先用phpmyadmin或mysqldump导出数据库为sql文件,用Editplus,Notepad++或notepad2打开.Mysql4.1及以上版本,在每个CREATE TABLE 语句结尾有类似这样的句子 ENGINE=MyISAM DEFAULT CHARSET=latin1;Mysql4.0,在每个CREATE TABLE 语句结尾类似这样的句子 TYPE=MyISAM;要从Mysql4.0导入Mysql4.1就把下面这段替换...

MySQL的varchar最多能存放多少个字符
在 MySQL5.0以上的版本中,varchar数据类型的长度支持到了65535,也就是说可以存放65532个字节的数据,起始位和结束位占去了3个字 节,也就是说,在4.1或以下版本中需要使用固定的TEXT或BLOB格式存放的数据可以使用可变长的varchar来存放,这样就能有效的减少数据库文 件的大小。MySQL 数据库的varchar...

如何修改mysqld
1.删除原Mysql的服务,在Windows命令行中执行 sc delete mysql 2.重新安装Mysql服务 在命令行中cd到Mysql的bin目录下执行:Mysql\\bin>mysqld-nt.exe --install --defaults-file="my.ini文件路径"如:Mysql\\bin>mysqld-nt.exe --install MySQL41 --defaults-file="D:\\Mysql\\my.ini“这样新安装...

SQL数据库怎么导入导出数据(sql数据库如何导入数据)
1,进入MySQL目录下的bin文件夹:cdMySQL中到bin文件夹的目录 如我输入的命令行:cdC:ProgramFilesMySQLMySQLServer4.1in (或者直接将windows的环境变量path中添加该目录) 2,导出数据库:mysqlmp-u用户名-p数据库名<导出的文件名 如我输入的命令行:mysqlmp-uroot-pnews (如果导出单张表的话在数据库名后面输入表名...

MySQL中VARCHAR的单位
VARCHAR是MySQL中常用的数据类型,但其单位究竟是字符还是字节呢?经过查阅,MySQL的 官方文档 给出了答案:4.1及之后的版本,VARCHAR的单位是字符;4.1之前的版本,VARCHAR的单位是字节。(As of version 4.1 , MySQL interprets length specifications in character column definitions in ...

MySQL filesort原理及优化
双路排序首先扫描出需要排序的字段并排序,然后根据排序结果再次扫描需要select的列数据,效率不高但节省内存。排序使用快速排序算法,内存不足时将排序结果写入磁盘文件,然后合并。单路排序在MySQL 4.1版本引入,将两次扫描数据操作合并为一次,减少内存使用,但可能耗用更多sortbuffer空间。MySQL 4.1及后续...

相似回答
大家正在搜