免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 17369 | 回复: 33
打印 上一主题 下一主题

也谈MySQL4.0升到4.1的中文乱码问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-11-23 14:26 |只看该作者 |倒序浏览
我想大家都会遇到这个问题。
大概有几百MB的数据需要导。

比如你使用mysqldump导出来的数据要放到一个4.1那么我觉得有两个方法:

首先你把你的mysql 4.1设置成为gb2312字符集

然后你把要导的文件打开把里面的CREATE语法加一句
CREATE TABLE sss(
zxxxxxx
) CHARACTER SET BINARY;

这样,当你导到新库里的时候CHAR VARCHAR自己会变成VARBINARY,然后你再修改成为gb2312

这样也有一个缺点,如果你表很多并且可能会因此影响性能。那你就要一个一个字段修改。

我建议你把文件里CREATE TABLE 的CHAR结构变为BINARY而VARCHAR变为VARBINARY这样你要修改回来还知道怎么修改。


总知,导之前先变成BINARY之后再改就好了。

论坛徽章:
0
2 [报告]
发表于 2004-12-02 15:07 |只看该作者

也谈MySQL4.0升到4.1的中文乱码问题

我报告给mysql
SELECT INTO OUTFILE
If the filename includes chinese charactor, it's changed
If the pathname includes chinese charactor, it's can't find the path name
LOAD DATA
can recognize the orignal filename which I type in Select statement
can't recognize the orignal pathname which I type in Select statement

How to repeat:
E:\db\bin>;mysqld-max-nt.exe --console

mysql>; select * from aa;
+------+--------+
| a    | b      |
+------+--------+
| 1    | 111.11 |
+------+--------+
1 row in set (0.04 sec)

mysql>; select * from aa into outfile 'e:/db/aa.txt';
Query OK, 1 row affected (0.00 sec)

mysql>; select * from aa into outfile 'e:/db/中文.txt';
Query OK, 1 row affected (0.00 sec)

but the file name be changed  to '脰脨脦脛.txt'

mysql>; select * from aa into outfile
'e:/db/新文件夹/中文.txt';
ERROR 1 (HY000): Can't create/write to file
'e:\db\脨脗脦脛录镁录脨\脰
脨脦脛.txt
' (Errcode: 2)
mysql>; load data infile 'e:/db/aa.txt' into table aa;
Query OK, 1 row affected (0.02 sec)
Records: 1  Deleted: 0  Skipped: 0  Warnings: 0

mysql>; load data infile 'e:/db/中文.txt' into table aa;
Query OK, 1 row affected (0.00 sec)
Records: 1  Deleted: 0  Skipped: 0  Warnings: 0

mysql>; load data infile
'e:/db/新文件夹/中文.txt' into table aa;
ERROR 1105 (HY000): File
'e:\db\脨脗脦脛录镁录脨\脰
脨脦脛.txt' not found (Errcod
e: 2)

Suggested fix:
4.0.21 and earlier is ok
他们的回复
------------------------------------------------------------------------

[2004-10-29 09] Sinisa Milivojevic

Currently, MySQL does not support filenames in some of multi-byte
character sets.



This is a problem that is caused by multi-byte char sequences
containing a backslash.



This is scheduled to be fixed in 5.1.

论坛徽章:
0
3 [报告]
发表于 2004-12-07 16:22 |只看该作者

也谈MySQL4.0升到4.1的中文乱码问题

我的表名称是英文的,另外使用mysqlimport导入所以文件名也是英文。

所以没遇到你这个问题。

谢谢赐教!

论坛徽章:
0
4 [报告]
发表于 2004-12-10 16:28 |只看该作者

也谈MySQL4.0升到4.1的中文乱码问题

l楼上大兄地我 也于语见了此文题请高手之点啊

论坛徽章:
0
5 [报告]
发表于 2004-12-15 23:46 |只看该作者

也谈MySQL4.0升到4.1的中文乱码问题

有没有彻底解决4.1中文乱码的问题?!

对原来的数据,一定要先从4.0导出,然后改动,再导入吗?

那么在4.1里新建库或表呢?要怎样做才不至于中文乱码?

论坛徽章:
0
6 [报告]
发表于 2004-12-16 08:24 |只看该作者

也谈MySQL4.0升到4.1的中文乱码问题

如果是新建的就不会有问题。旧版导入一定会有问题。

4.0 4.1的存储算法可能有不同。

另外,你还要考虑到目前大部分的mysqlclient都不支持4.1

升级其实是一种危险。 系统越庞大危险程度越高。

比如PHP Perl 等等都要更换MySQLClient的库

论坛徽章:
0
7 [报告]
发表于 2004-12-16 13:23 |只看该作者

也谈MySQL4.0升到4.1的中文乱码问题

.是啊,所以是否要升级还是要深思啊。
很多基于4.0的PHP程序也许会因此而无法正常使用了

论坛徽章:
0
8 [报告]
发表于 2005-01-10 07:55 |只看该作者

也谈MySQL4.0升到4.1的中文乱码问题

而且无论如何调,在phpMyadmin里看到的永远都是乱码

论坛徽章:
0
9 [报告]
发表于 2005-01-10 09:14 |只看该作者

也谈MySQL4.0升到4.1的中文乱码问题

to platinum
mysql4.1里还要设置client端采用的encode 如果跟server端不一样,就出乱码了。

这个问题,我在mysql官方的mysql query browser工具使用的时候才不出。

所以,大家还是慎重更换吧。有成熟的方案之前,谨慎升级

论坛徽章:
0
10 [报告]
发表于 2005-01-10 15:04 |只看该作者

也谈MySQL4.0升到4.1的中文乱码问题

是的,我很后悔升级
而且还有一个问题,发现只能升级,不能降级,4.1.X的数据在4.0.X中无法导入
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP