2017-08-31 11 views
0

私のRails 4.2アプリケーションで、私は奇妙な問題に遭遇しました。私はutf8mb4にmysqlエンコーディングを切り替える必要がありました(投稿で絵文字を許可する)。 私は5.7にMySQLを更新した、とdatabase.ymlの更新、変更tabelsなど:Mysql2 ::エラーutf8mb4(パス:/ usr/share/mysql/charsets /)の文字セットを初期化できません

encoding: utf8mb4 
collation: utf8mb4_unicode_ci 

は、すべてのMac OSを実行している私のローカルマシン上で働いていました。

テストサーバーでは、同じ手順と設定を行っています。

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 

I:私はdatabase.ymlの に

encoding: utf8mb4 

を設定している場合しかし、私は、私は両方のマシン上のmy.cnfに行ってきたmysqlのため

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

追加のMySQLの設定を取得しますRailsアプリではなく、テストサーバー上で絵文字を追加できます。 どちらのマシンでも、私はus0です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

多分これが役立ちます:RoRの: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

関連する問題