最近,在用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就不会出现乱码。
MySQL5中文乱码和Data Too Long For 'XXX' 解决方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
sql语法、关系建模
死瘦宅
2019-02-24 22:35:22
MySQL 事务、函数、触发器、数据库备份、权限管理
死瘦宅
2019-02-24 22:35:12
如何释放已删除的InnoDB磁盘空间
lvrenX
2019-02-24 13:04:33
MySQL数据库集群-PXC方案
wy53780
2020-04-23 13:55:07
《从0到1学习Flink》—— Flink 读取 Kafka 数据批量写入到 MySQL
zhisheng
2019-02-24 21:04:11
SpringBoot 填坑 (一) | CentOS7.4 环境下,表时间字段默认值设置失效
一個優秀的廢人
2019-02-24 15:33:55
mysql-存储过程
雙子城
2019-02-24 13:43:57
jmeter学习指南之操作 mysql 数据库
小強測試
2019-02-24 13:34:06
20190222全天的实验
清歡難尋
2019-02-24 13:17:21
数据库监控:zabbix(fpmmm)
AMGYM
2019-02-24 13:05:14
数据库监控:nagios(check_mysql_health)
AMGYM
2019-02-24 13:05:14
MongoDB索引优化详解
geekpy
2019-02-24 14:20:06
Sql server中一些Select检索高级用法
wbzjacky
2019-02-24 13:12:37
将frm,myi,myd文件打包成sql文件
jason1982
2019-02-24 12:57:22