INSERT INTO Shenzhen ( ItemId , Title , City , PostCode , X , Y , en_title ) VALUES ( 1720 , '深圳新闻-Shenzhen Post' , '深圳市' , '' , 114311218 , 22598236 , '2' )
刚刚在做一个插入操作的时候提示
1046 - Data too long for column 'Title' at row 1
解决办法如下
1,mysql的编码设置为 utf8 格式,可以从开始菜单那图形化配置,或者直接进入安装目录配置my.ini
2,在java连接数据库时这样写:
String url ="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 charset选项,看是否设置正确了。
综上所述,出现乱码后,一定检查数据库服务器、库、表、字段的编码设置是否支持中文。
经过试验,只要上述都设置为UTF8,即使,URL后面不添加useUnicode=true&characterEncoding=UTF8就不会出现乱码。
分享到:
相关推荐
在MySQL数据库操作中,当你尝试插入或更新一行数据时,如果某个字段的值超过了该字段定义的最大长度,系统会抛出“ERROR 1406 : Data too long for column”的错误。这个错误提示非常直接,意味着你试图输入的数据在...
在 MySQL 中,当我们尝试导入中文字符时,总是报错“Data too long for column XX at row n”。这个问题的主要原因是 MySQL 的默认编码为 gb2312,而我们通常使用的 UTF-8 编码,这两个编码之间的差异导致了这个问题...
- 当初安装MySQL服务器时,选择了某种特定的字符集(如latin1),而前端页面使用的字符集不同(如gb2312或UTF-8),这会导致数据在传输过程中出现乱码。 2. **数据库本身的编码设置不一致**: - 在使用图形界面...
在上面的例子中,当尝试向`VARCHAR(10)`列插入`12345678901`时,由于超过了10个字节(10个英文数字字符共10字节),MySQL返回了`ERROR 1406 (22001): Data too long for column 'name' at row 1`错误。同样,当尝试...
二进制数据类型 row 1~2000字节 可变长二进制数据,在具体定义字段的时候必须指明最大长度n long raw 1~2GB 可变长二进制数据 LOB数据类型 clob 1~4GB 只能存储字符数据 nclob 1~4GB 保存本地语言字符集数据 blob...
// $foo是字符串"1" (ASCII 49) $foo += 1; // $foo现在是整数(2) $foo = $foo + 1.3; // $foo是一个双精度数(3.3) $foo = 5 + "10 Little Piggies"; // $foo是一个整数(15) $foo = 5 + "10 Small Pigs"; // $foo是...