mysql创建记录时报错:
Mysql2::Error: Incorrect string value: '\xE5\xB0\x8F\xE5\xB1\x8B' for column 'name' at row 1: UPDATE `love_houses` SET `name` = '小屋', `updated_at` = '2018-04-24 10:59:41' WHERE `love_houses`.`id` = 1
进入mysql命令行输入:
show create table love_houses;
结果如下,发现name
字段不是utf8编码,而是latin1
| love_houses | CREATE TABLE `love_houses` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET latin1 DEFAULT NULL COMMENT '爱情小屋名称',
`love_start_time` datetime DEFAULT NULL COMMENT '相爱的开始时间',
`is_delete` tinyint(1) DEFAULT '0' COMMENT '软删除',
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `index_love_houses_on_is_delete` (`is_delete`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
所以需要改变这个字段的编码才可以保存汉字。
发现如下方法:
1. ALTER TABLE `table` DEFAULT CHARACTER SET utf8;
但是虽然修改了表的编码格式,但是字段的编码格式并没有修改过来,没有用。
2. ALTER TABLE `tablename` CHANGE `字段名1` `字段名2` VARCHAR(36) CHARACTER SET utf8 NOT NULL;
不知为何报了错,改不成功。
3. alter table `tablename` convert to character set utf8;
它可以修改一张表的所有字段的编码格式,修改成功,可以成功保存汉字!