Data truncation: Data too long for column错误分析

有一次遇到mysql jdbc抛出异常

Data truncation: Data too long for column

经过思考,发现原因可能有两种:

一、字段长度不够。

可以考虑选择更长的字段,例如:

VARCHAR->TEXT->MEDIUMTEXT->LONGTEXT->LONGBLOB

另外mysql貌似没有nvarchar类型

二、数据源URL中的字符集选项跟数据库表的实际字符集不统一

如果是统一的话,Java代码的写法应该是:

String driverName = "com.mysql.jdbc.Driver";

String dbURL = "jdbc:mysql://localhost:3306/cmsproj?useUnicode=true&characterEncoding=utf-8";

而数据表的创建方式是

CREATE TABLE xxx

( ...

) ENGINE=MyISAM DEFAULT CHARSET=utf8

注意:

* 数据库也可以指定字符集,但如果在create table中使用默认字符集,则create table更优先。

* Java代码在编译时使用utf8还是gbk不会有影响,只要传入的参数不是乱码就可以。

其实不统一字符集的话也是可以工作,只是有一定概率会抛出Data truncation异常,例如URL中指定了utf8字符集,而创建表不指明utf8字符集或者使用缺省latin字符集,则有可能抛出异常。

时间: 2024-10-27 11:22:23

Data truncation: Data too long for column错误分析的相关文章

Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'content' a

1.错误描述 org.hibernate.exception.DataException: could not execute statement at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:69) at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert

Data truncation: Data too long for column 'gender' at row 1 出现的原因

创建数据库的代码如下: create database day15 ; use day15 ; create table customer( id varchar(100) primary key, name varchar(100), gender varchar(4),# 1 male 0 female birthday date, cellphone varchar(20), email varchar(40), hobby varchar(100),#eat,sleep type var

Data truncation: Data too long for column ‘****‘

今天写代码时发现中文存入mysql乱码了. 我的数据持久化框架用的Hibernate.首先我确认JSP页面传入后台的中文数据没有乱码,因此我确信是中文数据在存储时出了问题.网上查阅资料,许多人说可以在hibernate的配置文件中加入:  <property name="connection.characterEncoding">utf-8</property> 加了这句后还是不行.继续查资料.....然后,我突然想到可能是我建数据库时没有指定编码,数据使用的的

Data truncation: Data too long for column &#39;id&#39; 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(PreparedSta

ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] - Data truncation: Incorrect datetime value: &#39;&#39; for column &#39;pubdate&#39; at row 1

之前的Connector/J版本是:mysql-connector-java-5.0.4-bin.jar 后来换成mysql-connector-java-5.1.45-bin.jar,问题解决 2018-02-16 01:07:10,086 WARN [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] - SQL Error: 0, SQLState: 220012018-02-16 01:07:10,086 ERROR [org.hibern

com.mysql.jdbc.MysqlDataTruncation: Data truncation异常

Exception in thread "main" com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'note' at row 1 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2868) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573) at co

Data truncation: Out of range value for column &#39;id&#39; at row 1 ### The

org.springframework.dao.DataIntegrityViolationException: ### Error updating database. Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value for column 'id' at row 1 ### The error may involve com.baomidou.springwind.mapper.Act

Data truncation: Out of range value for column &#39;Quality&#39; at row 1

Q: Data truncation: Out of range value for column 'Quality' at row 1 com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value for column 'Quality' at row 1 A: You column Quality DOUBLE(1,1) can take input only 1 |2 |3 Double( totalsize

mysql 插入中文报错: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value...

总结写在前面, 总结: 当Java通过jdbc链接mysql插入中文时,要保证程序可以正常执行,而且插入的中文不会乱码, mysql服务器端,对数据表(不是数据库)的编码设置,要保证是支持中文的,例如gbk, gb2312, utf-8 jdbc的连接配置,要开启useUnicode=true,并且要设置一个支持中文的编码,不需要跟mysql表的编码保持一致,只需要支持中文就行.例如characterEncoding=utf8 本身的Java文件的编码需要支持中文 ===============