Rails 关于 MySQL 的 utf8mb4 插入某些表情字符的时候就报错了

hxh1246996371 · 2016年08月28日 · 最后由 hxh1246996371 回复于 2016年08月28日 · 2351 次阅读

事情是这样的,最近尝试往数据库插入某些表情字符的时候就报错了,类似 (Mysql2::Error: Incorrect string value: '\xF0\x9F\x91\x93'。然后查找资料后发现是 utf8 编码的问题,于是乎我就将数据库、以及相关表和字段的编码从 utf8 改成了 utf8mb4 ,但是发现仍然插入报错,不知道如何解决这个问题,想请教一下各位

database.yml 配置也要改 encoding: utf8mb4

只有手动改出错的那几个表为 utf8。 以后建表的时候多加一句, create_table :xxx, option: 'charset=utf8' do |t| ,大概这样。。是 options 还是 option 记不清了。

#1 楼 @numbcoder 都改了,但是还是不行,好奇怪

不好意思 好像可以了,刚刚忘了重启 mysql 服务

不用重启呀,直接通过 mysql cli 执行一行语句就可以了

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

#5 楼 @lgn21st 我这边试了,好像真的是需要重启 mysql 服务呢

huacnlee 关闭了讨论。 08月29日 09:59
需要 登录 后方可回复, 如果你还没有账号请 注册新账号