MySQL 4.0 数据导入到 MySQL 5.0 可能出现的问题
2006-07-10 10:32
645 查看
MySQL 4.0 数据导入到 MySQL 5.0 可能出现的问题
MySQL4.1 和 5.0 的字符设置比 4.0 复杂很多,详见:Character Set Support
utf-8 的中文数据从 4.0 导入到 5.0 之后,PHP 读取似乎没什么异常,但是在里面看到的中文却都是乱码。这是因为一般 MySQL 5.0 的默认的 character_set_database 为 latin1 ,导入后的数据的 Collation 是 latin1_bin 或 latin1_swedish_ci 。这时候再用 phpMyAdmin 导出的数据也都是乱码,不能使用了。
mysql> show variables like ‘%character%’;
+————————–+——————————————-+
| Variable_name | Value |
+————————–+——————————————-+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /data/mysql/fifteen/share/mysql/charsets/ |
+————————–+——————————————-+
7 rows in set (0.00 sec)
我解决这个问题的方法是先将 phpMyAdmin 的 libraries/select_lang.lib.php 文件中的 MySQL charsets map 中的(在 phpMyAdmin 2.7.0-pl2 中是第 263 行):
‘utf-8′ => ‘utf8′,
改为:
‘utf-8′ => ‘latin1′,
这样在 phpMyAdmin 里面就能正常显示 utf-8 的中文了。这样导出来的数据也就能用了。
将导出来的 sql 文件中的 character set 和 collate 分别都设成 utf8 和 utf8_general_ci ,同时把数据库的 collation 也改成 utf8_general_ci ,然后重新导到 MySQL 5.0 ,再把之前修改过的 select_lang.lib.php 改回原样,这样 phpMyAdmin 中的乱码问题就彻底解决了。
避免出现这个问题,只需在导入数据之前,先将数据库的 collation 设为 utf8_general_ci。
PHP 连接 MySQL 5.0 数据库后,最好先执行以下几句,以免因为 collation 问题而出现各种难以预见的错误:
SET NAMES ‘utf8′
SET CHARACTER SET ‘utf8′
SET CHARACTER_SET_CLIENT = ‘utf8′
SET COLLATION_CONNECTION=’utf8_general_ci’
SET CHARACTER_SET_RESULTS = ‘utf8′
SET CHARACTER_SET_SERVER = ‘utf8′
Updated 2006-3-13
1. mysqldump –default-character-set=latin1 foobar > foobar.sql 这样就会得出一个编码正确的档
2.更改foobar.sql内中的 latin1 字段为 utf8 (replace all latin1 -> utf8)
3.转换此 sql 档为 unicode(方便直接转换为正确的utf8编码)
4.在 phpMyAdmin 中导入 foobar.sql, 或是在 SQL 直接贴上 foobar.sql 的内容
相关文章推荐
- [MYSQL]将数据从5.0版本导入到4.1.7版本中出现乱码问题解决方案
- mysql包含二进制字段的数据导出导入及可能遇到的问题
- MysqlNDBcluster集群数据操作可能出现的问题
- jeesite+mysql,数据导入出现问题。
- Mysql5.6版本导出sql文件数据导入到5.7版本出现的问题
- 如何解决MySQL导入大数据出现的问题
- 不同mysql版本数据导入出现的问题
- 数据文件导入mysql时出现中文乱码问题
- mysql利用phpmyadmin导入数据出现#1044错误 的可能原因
- 解决Mysql导入大数据出现gone away的问题
- 使用Sqoop将数据从Hive导入MySQL可能遇到的问题
- 将mysql导入到solr过程中出现的问题
- mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)
- sqoop-导入数据出现java.sql.SQLException: Streaming result set com.mysql.jdbc.
- mysql写入数据库后,数据出现乱码问题的解决方案
- 今天遇到一个问题:在程序中加入的定时触发器,当时出现这样一个问题,触发器定时2秒,程序从后台查询数据经过复杂处理后时间超过了2秒,我查阅好些网络上说有可能触发器等待程序执行完毕后,在触发下一次,也有说
- 导入数据常出现 重复的数据 下面介绍几条sql语句来解决问题!!
- 数据导入hive出现的问题记录
- mysql从csv文件导入数据时提示int类型出现' '(空字符串)
- MySQL数据传输出错或者无法顺利导入导出问题