2017-08-31 56 views
0

在我的Rails 4.2应用程序中,我偶然发现了一个奇怪的问题。我不得不将mysql编码切换到utf8mb4(以允许在帖子中使用Emoji)。 我已经更新MySQL来5.7,改变tabels等更新的database.yml有:Mysql2 ::错误无法初始化字符集utf8mb4(路径:/ usr/share/mysql/charsets /)

encoding: utf8mb4 
collation: utf8mb4_unicode_ci 

我的一切都运行的Mac OS本地机器上工作。

在测试服务器上,我已经完成了相同的步骤和配置。但是,如果我在database.yml中 设置

encoding: utf8mb4 

我得到

Mysql2::Error Can't initialize character set utf8mb4 (path: /usr/share/mysql/charsets/) 

额外的MySQL安装的MySQL我在my.cnf做在两台机器上:

innodb_file_format = Barracuda 
innodb_large_prefix 
innodb_file_per_table = 1 

init_connect='SET collation_connection = utf8_unicode_ci' 
init_connect='SET NAMES utf8mb4' 
innodb_file_format_max = Barracuda 
innodb_strict_mode = 1 

character-set-client-handshake = FALSE 
character-set-server = utf8mb4 
collation-server = utf8mb4_unicode_ci 

我可以在测试服务器上添加表情符号,但不能通过Rails应用程序。 在我使用的两台机器上mysql2版本0.3.21。 什么会导致此问题?

PS。即使我没有在我的本地我已经在测试机器上添加了到Index.xml的utf8mb4,但它没有帮助。

+0

什么是您的服务器的MySQL服务器的版本?我认为这是你的问题。我相信utf8mb4从5.5开始支持,但我不确定。 –

+0

我使用MySQL 5.7.19。数据库本身支持uft8mb4,我可以将符号(表情符号)插入数据库,但不能使用Rails应用程序。 – rolkos

+0

@rolkos - 看看是否有帮助:http://blog.arkency.com/2015/05/how-to-store-emoji-in-a-rails-app-with-a-mysql-database/ –

回答

0

也许这将帮助:回报率:application_controller.rb

def configure_charsets 
    response.headers["Content-Type"] = "text/html; charset=UTF-8" 
    suppress(ActiveRecord::StatementInvalid) do 
     ActiveRecord::Base.connection.execute 'SET NAMES utf8mb4' 
    end 
    end 
+0

不幸的是,没有工作。 – rolkos

+0

@rolkos - 看看是否有帮助:http://blog.arkency.com/2015/05/how-to-store-emoji-in-a-rails-app-with-a-mysql-database/请让我知道你采取什么具体步骤来解决它。 –

+0

我看到这篇文章中描述的步骤与我所做的类似。最让我困扰的是它在本地工作,而不是在CentOS的测试服务器上工作。 – rolkos

相关问题