日期:2014-05-16  浏览次数:20746 次

mysql数据从5.0导入到4.1.7乱码问题怎么解决啊?
由于某种原因,我需要把数据从5.0版本导入到4.1.7版本中.已经加了mysql_query( "SET   NAMES   UTF8 ");等,但还是乱码,请问各位高手有没有好的解决办法??那位高手能提供一些关于数据导入乱码问题的资料或信息,定不胜感激!!!再次感谢!

------解决方案--------------------
首先你要确保,5.0和4.1的字符集编码是一样的,可以用mysql> show variables like '%char% ';来查看.
方法有如下几种:
1.直接使用mysqldump导出成backup.sql,如果两边的数据库的字符集不一致,这里就要加上参数default-character-set=utf8,即:c:\mysql\bin> mysqldump -u name -p --default-character-set=utf8 dbname> c:\backup.sql
然后,再在目的数据库上c:\mysql\bin> mysql -u name -p <c:\backup.sql
如果提示不行的话,你就用文本编辑器打开backup.sql,把提示有错的行都去掉.这里也可以用source命令来进行恢复.mysql> source 'c:/backup.sql ';
上面的过程也可以通过工具mysql administrator来进行,运行后找到备份与恢复的菜单就可以了,要注意的就是字符集的选择,那里会字符集给你选择.
mysqldump的其它参数可以通过c:\mysql\bin> mysqldump --help来查看.

2.用工具mysql migration toolkit来进行数据的转移,前提是要安装j2re才行,按照它提示的步骤进行就可以了,另外就是要注意字符集的选择和mysql数据库允许远程登录.

3.在5.0上执行mysql> show create table tbname;得到表结构,再复制到4.1上执行.然后,执行mysql> select * into outfile 'c:/backup.txt ' from tbname;导出数据到backup.txt这个文件,接着把backup.txt复制到4.1的服务器那里,用命令mysql> load data infile 'c:/backup.txt ' into table tbname;这里的tbname就是刚才的建表语句建立的那个表.
当然,select * into outfile 和load data infile这两个命令,还可以加上参数,fields enclosed by terminated by 和lines terminated by这些修饰符,更加详细的用法查看一下手册就可以了.

4.如果都是myisam表类型的话,就可以直接打包后,复制过去,再解压就可以了.