继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

MySQL5中文乱码和Data Too Long For 'XXX' 解决方法

largeQ
关注TA
已关注
手记 987
粉丝 92
获赞 585


最近,在用mysql做一个测试用例的时候,出现乱码。

现象:无论是从MySQL Query Browser还是Java程序插入数据库,只要插入中文字符, 就会报错“Data too long for column 'XXXXX' ”。这里,显然不是字段长度设置太短的问题。 

在网上查资料,大多介绍不外乎下面集中解决方法:

1.修改Server端编码。修改character_set_xxx

2.在JDBC-URL连接后面加上&useUnicode=true&characterEncoding=UTF8

3.修改my.ini文件

去掉sql-mode = "STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"中的STRICT_TRANS_TABLES

  

真是病急乱投医,所以该试的方法都试了,问题依然无法解决。

被这个问题折磨的实在不行了,最后准备卸载重装一次。再不行,就去别人的机器上试下。在备份表的SQL语句时,发现SQL如下:

DROP TABLE IF EXISTS `test`.`test1`;

CREATE TABLE `test`.`test1` (

column_name column_type [charset latin7]

) ENGINE=InnoDB DEFAULT CHARSET=latin7; 

最后面,竟有这么一句:

DEFAULT CHARSET=latin7。

直接晕倒,明明已经在MySQL Query Browser中将表的编码设置成UTF8了,怎么是latin7。改成UTF8,问题解决。

看来,有时候不能太相信可视化的编辑器,还是直接的SQL最直接。

还有,就是查看下表的字段也有column charset选项,看是否设置正确了。 

综上所述,出现乱码后,一定检查数据库服务器、库、表、字段的编码设置是否支持中文。

经过试验,只要上述都设置为UTF8,即使,URL后面不添加useUnicode=true&characterEncoding=UTF8就不会出现乱码。

©著作权归作者所有:来自51CTO博客作者guojie的原创作品,如需转载,请与作者联系,否则将追究法律责任

mysql数据库解决Oracle


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP