現状
awsのリモートサーバーでdb:seedをすべくrake db:seed RAILS_ENV=productionコマンドを打ち込みました。
その際に吐いたエラーがこちらです。
ctiveRecord::StatementInvalid: Mysql2::Error: Incorrect string value: '\xE9\x87\x91\xE8\x9E\x8D' for column 'name' at row 1: INSERT INTO `industries` (`name`, `created_at`, `updated_at`) VALUES ('金融', '2020-05-04 06:27:16', '2020-05-04 06:27:16') /var/www/rails/bctalk/db/seeds.rb:9:in `block in <top (required)>' /var/www/rails/bctalk/db/seeds.rb:8:in `each' /var/www/rails/bctalk/db/seeds.rb:8:in `<top (required)>' Caused by: Mysql2::Error: Incorrect string value: '\xE9\x87\x91\xE8\x9E\x8D' for column 'name' at row 1 /var/www/rails/bctalk/db/seeds.rb:9:in `block in <top (required)>' /var/www/rails/bctalk/db/seeds.rb:8:in `each' /var/www/rails/bctalk/db/seeds.rb:8:in `<top (required)>' Tasks: TOP => db:seed (See full trace by running task with --trace)
### やったこと
調べたところローカル環境とリモート環境のcharasetの違いが原因とのことでどちらもutf8に統一しました。
defalutの設定では日本語が読み込まれないとこと。
以下に設定。
リモート
+--------------------------+-------------------------------------------+ | Variable_name | Value | +--------------------------+-------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /rdsdbbin/mysql-5.7.26.R1/share/charsets/ | +--------------------------+-------------------------------------------+
ちなみにローカル
+--------------------------+----------------------------------------------------------+ | Variable_name | Value | +--------------------------+----------------------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/local/Cellar/mysql@5.6/5.6.47/share/mysql/charsets/ | +--------------------------+----------------------------------------------------------+
再度rake db:seed RAILS_ENV=productionをしても同じエラーが出ました。
どうやらutf8の設定を実行するコマンドがあるとのことで
こちらの記事を参考に以下のコマンドを実行するもエラー
http://www.op-union.com/posts/9
①システム全体に文字コードを日本語変更の適用コマンドを実行
$ sudo sed -i "s/en_US.UTF-8/ja_JP.UTF-8/g" /etc/sysconfig/i18n
②データベースの文字設定をutf8に変更
MySQL [database-name]> ALTER DATABASE database-name default character set utf8;
仮説
もしご存知の方がいらっしゃったらなんですがmysqlのcharacter_sets_dirの設定も
ローカル、リモートで合わせていかないといけないのでしょうか?
知っている方がいればその方法も教えていただければ幸いです。
##環境
rails 5.2.4
ruby 2.5.1
aws
RDS mysql
#### 追記
上記以外の情報が必要であれば迅速に対応させていただきます。
ご教授お願いいたします。
あなたの回答
tips
プレビュー