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

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

转载于:https://my.oschina.net/u/2011331/blog/491542

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值