mysql创建记录时报错:

  1. 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命令行输入:

  1. show create table love_houses;

结果如下,发现name字段不是utf8编码,而是latin1

  1. | love_houses | CREATE TABLE `love_houses` (
  2. `id` bigint(20) NOT NULL AUTO_INCREMENT,
  3. `name` varchar(255) CHARACTER SET latin1 DEFAULT NULL COMMENT '爱情小屋名称',
  4. `love_start_time` datetime DEFAULT NULL COMMENT '相爱的开始时间',
  5. `is_delete` tinyint(1) DEFAULT '0' COMMENT '软删除',
  6. `created_at` datetime NOT NULL,
  7. `updated_at` datetime NOT NULL,
  8. PRIMARY KEY (`id`),
  9. KEY `index_love_houses_on_is_delete` (`is_delete`)
  10. ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8

所以需要改变这个字段的编码才可以保存汉字。
发现如下方法:

  1. 1. ALTER TABLE `table` DEFAULT CHARACTER SET utf8;

但是虽然修改了表的编码格式,但是字段的编码格式并没有修改过来,没有用。

  1. 2. ALTER TABLE `tablename` CHANGE `字段名1` `字段名2` VARCHAR(36) CHARACTER SET utf8 NOT NULL;

不知为何报了错,改不成功。

  1. 3. alter table `tablename` convert to character set utf8;

它可以修改一张表的所有字段的编码格式,修改成功,可以成功保存汉字!

0条评论 顺序楼层
请先登录再回复