Mac下使用Hibernate在MyEclipse用annotation方法插入数据产生Data truncation问题的解决方法

在这里,我使用的数据库是mysql,使用的编码是utf8,其他数据库以及其他可按相同思路解决。

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

问题产生原因:

工程文件与数据库对应的表编码不一样。

解决方法:

(1)在mysql中逐一更改每个表的编码(亲测不怎么管用):

步骤: 1.启动mysql数据库后,打开 terminal 输入 /usr/local/mysql/bin/mysql -u root -p 进入mysql数据库,并输入密码。

        2.use你想要改的表的的数据库,输入alter table `数据库名` default character set utf8;


     (2)重新建表,设置表的默认编码设为utf8(麻烦):

步骤:1.删除表格,重新建,在最后写 ENGINE=InnoDB DEFAULT CHARSET=utf8;

例如:

CREATE TABLE `owner_information` (
  `owner_id` varchar(10) NOT NULL,
  `name` varchar(20) NOT NULL DEFAULT '',
  `sex` enum('male','female') DEFAULT 'female',
  `contact` int(11) DEFAULT NULL,
  `insuranceNumber` varchar(10) DEFAULT NULL,
  `sellingstatement` varchar(30) DEFAULT NULL,
  `car_id` varchar(10) NOT NULL DEFAULT '',
  PRIMARY KEY (`owner_id`),
  KEY `car_id_fk` (`car_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.运行

(注:有可视化软件的同学们只需要右键,show create table syntax就可以了。)

(3)更改mysql的默认编码(一劳永逸):

              步骤:  1.更改MySQL配置文件my-default.cnf:

            1)拷贝my-default.cnf并改名:cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

        2)编辑my.cnf,输入vi my.cnf;进入文本编辑器后输入i打开insert模式,并在最后加上:

[client]
default-character-set=utf8
[mysqld]
default-storage-engine = INNODB
character-set-server = utf8
collation-server = utf8_general_ci
3)按esc,输入wq按enter建保存退出。

2.更改db.opt文件,把所有写了latin或其他编码的部分改为utf8:

  1)进入/usr/local/mysql/下,右键data文件夹,选中’显示简介‘,将其权限改为对everyone可读可写,同理进入data文件夹后对mysql文件夹做 同样操作,进入mysql文件夹后对db.opt也做同样操作。

                        2)vi db.opt;将其改为:

default-character-set=utf8

default-collation=gbk_general_ci

       3.一样wq保存退出后,记得把权限们都改回来哦!

(4)检查你的输入是否真的长了。

解决方法都走过一遍之后,重启数据库;检查问题是否仍然存在!

仍然存在问题的话,如果是id出现问题的话,请检查,id前的generator是否为assigned (自行分配)!


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值