在这里,我使用的数据库是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模式,并在最后加上:
3)按esc,输入wq按enter建保存退出。[client] default-character-set=utf8 [mysqld] default-storage-engine = INNODB character-set-server = utf8 collation-server = utf8_general_ci
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 (自行分配)!