首页 > 代码库 > Data truncation: Data too long for column 'id' at row 1

Data truncation: Data too long for column 'id' at row 1

Caused by: java.sql.BatchUpdateException: Data truncation: Data too long for column ‘titleimg‘ at row 1    at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1269)    at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:955)    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeBatch(NewProxyPreparedStatement.java:1723)    at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)    at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)    ... 75 more10437 ERROR [2013-04-15 17:22:49]  

如题:错误并不是因为字段过长而导致出错的,

        1. 可能是因为数据库里的表设置的字符集不相同。

        2. 也可能真是数据库字段里数据库确实过长(我是遇到的这种情况)。

例如:在同一个数据库中,存在utf8的表,也存在gbk_chinese_ci的表。

解决办法:alter table `cms_activity_test` convert to character set gbk collate gbk_chinese_ci;(单独修改指定表的字符集)

补充:通过在网上查找资料,一般都是修改数据库Mysql的默认字符集和修改单个数据库的字符集

1。 在Mysql数据库目录下找到my.ini文件,然后Ctrl+F查找character-set,修改

[client]port=3306[mysql]default-character-set=utf8

2. 修改单个数据库字符集,data目录下找到db.opt文件,然后修改

default-character-set=gbkdefault-collation=gbk_chinese_ci

3. 用命令设置

mysql> SET character_set_client = utf8 ;mysql> SET character_set_connection = utf8 ;mysql> SET character_set_database = utf8 ;mysql> SET character_set_results = utf8 ;mysql> SET character_set_server = utf8 ;mysql> SET collation_connection = utf8 ;mysql> SET collation_database = utf8 ;mysql> SET collation_server = utf8 ;

 4. 如果还嫌太麻烦了,就用一个蠢办法,如果整个数据库表不多且数据量不大的情况下,就将整个库导出,然后再去修改文件中字符集不一的表,最后再导入数据库。。。

Data truncation: Data too long for column 'id' at row 1