2017-08-31 68 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

相關問題