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

今天写代码时发现中文存入mysql乱码了。

我的数据持久化框架用的Hibernate。首先我确认JSP页面传入后台的中文数据没有乱码,因此我确信是中文数据在存储时出了问题。网上查阅资料,许多人说可以在hibernate的配置文件中加入:

 <property name="connection.characterEncoding">utf-8</property>

加了这句后还是不行。继续查资料....。然后,我突然想到可能是我建数据库时没有指定编码,数据使用的的是mysql的默认编码(而mysql的默认编码是安装时决定的) 。于是我将现有的数据库删除(小工程,删除了不要紧),重新建库,建库时指定编码

 create database  `db_photodisplay`  default character set utf8 collate utf8_general_ci;

建库后,重新建表。运行工程,出现了新的错误:

Data truncation: Data too long for column ‘rolename‘ at row 1

继续百度这个错误,百度上有人说,建表时加上engine=innodb default character set=utf8就好了。

于是我又删除了表,在建表时加上engine=innodb default character set=utf8

CREATE TABLE `role_info` (
 `id` bigint(20) NOT NULL,
  `rolename` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
)engine=innodb default character set=utf8

重新运行工程,发现中文数据成功存入数据库,没有乱码。

时间: 2024-08-16 11:00:07

Data truncation: Data too long for column ‘****‘的相关文章

Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column &#39;content&#39; 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错误分析

有一次遇到mysql jdbc抛出异常 Data truncation: Data too long for column 经过思考,发现原因可能有两种: 一.字段长度不够. 可以考虑选择更长的字段,例如: VARCHAR->TEXT->MEDIUMTEXT->LONGTEXT->LONGBLOB 另外mysql貌似没有nvarchar类型 二.数据源URL中的字符集选项跟数据库表的实际字符集不统一 如果是统一的话,Java代码的写法应该是: String driverName =

Data truncation: Data too long for column &#39;gender&#39; 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 &#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文件的编码需要支持中文 ===============