1046 - Data too long for column 'Title' at row 1 

解决办法如下

1,mysql的编码设置为 utf8 格式,可以从开始菜单那图形化配置,或者直接进入安装目录配置my.ini
修改MySQL文件夹下的my.ini文件。如下:
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8

2,java连接数据库时这样写:


String  durl="jdbc:mysql://localhost/sales?user=root&password=riskfitfeng&useUnicode=true&characterEncoding=utf-8";

3,数据库的编码为 utf8

4,数据库表编码为 utf8

5,数据库字段编码为 utf8
--------------------------------------------------------------------------------------------------------------------------------------------
最近,在用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语句时,发现 

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 charsetdrop table if exists user选项,看是否设置正确了。 

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

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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。