Ruby Rails MySQL 添加 ‘utf8mb4' 字符集错误

autumnwolf · March 05, 2015 · Last by autumnwolf replied at March 13, 2015 · 6671 hits

CentOS 6.5,当运行

rake db:create RACK_ENV=production

错误: Character set 'utf8mb4' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file rake db:create Can't initialize character set utf8mb4

数据库配置文件

ActiveRecord::Base.configurations[:production] = {
  :adapter   => 'mysql2',
  :encoding  => 'utf8mb4',
  ...

my.conf

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name            | Value              |
+--------------------------+--------------------+
| character_set_client     | utf8mb4            |
| character_set_connection | utf8mb4            |
| character_set_database   | utf8mb4            |
| character_set_filesystem | binary             |
| character_set_results    | utf8mb4            |
| character_set_server     | utf8mb4            |
| character_set_system     | utf8               |
| collation_connection     | utf8mb4_general_ci |
| collation_database       | utf8mb4_general_ci |
| collation_server         | utf8mb4_general_ci |
+--------------------------+--------------------+
10 rows in set (0.00 sec)

mysql> 

Mysql version:

Server version: 5.6.23 MySQL Community Server (GPL)

求帮助,谢谢 --------------- 折腾了一整天最终我把 :adapter => 'mysql2', 改成 :adapter => 'mysql' 就可以了,请问他们什么区别?

Rails 不用设置编码的 只需要 MySQL 修改好就行了

ruby 原生支持 utf8,mysql 原生只支持不规范的 3 字节 utf8,才自己搞出一个 utf8mb4 的怪胎。。。。以后遇到 5 字节的 utf8,mysql 岂不是又要哭了。

#3 楼 @est 那就 mb5,再说 mb4 已经够用了吧,有多少人在造字吗?

折腾了一整天最终我把 :adapter => 'mysql2', 改成 :adapter => 'mysql' 就可以了,求助他们什么区别?

#5 楼 @autumnwolf 这是给 Rails 指定了另一个版本的 MySQL gem list | grep mysql 查看一下,一定已经安装了两个版本的 MySQL

楼主有没有试试把配置文件中的utf8mb4 都改成utf8 是否可行?

@xixiwelcome 我所知道的就是 mysql 这个 gem 2013 年就不更新了,然后 mysql2 更简洁一些,还在更新。没有安装两个版本的 MySQL,我最开始的时候是 mysql5.1 然后更新到了 5.6 不知道有没有什么影响(目录问题?)。我目前的做法就是先放弃了 utf8mb4 使用的 utf8. 可行的。应该是 mysql2 的问题,mysql2 使用 mysql 的时候出现的问题。

You need to Sign in before reply, if you don't have an account, please Sign up first.