LoginSignup
1
2

More than 3 years have passed since last update.

AWS EC2+Rails+Nginx+Unicorn+CapistranoでRDS(MySQL)に接続できているのにデータが保存できない

Last updated at Posted at 2019-06-12

エラーの経緯

  • AWSでEC2とRDSは接続できている
  • アプリケーションは正常に表示できている
  • しかしユーザー登録や投稿を行おうとするとエラーが発生する

環境

  • Ruby 2.5.1
  • Rails 5.2.3
  • AWS EC2+RDS(MySQL)
  • Nginx+Unicorn+Capistrano

経緯詳細

  • AWSでEC2とRDSは接続できている
    AWSサーバー(EC2)にて下記コマンドを実行したところ問題なくmysqlに接続できた。
//AWSサーバー(EC2)
mysql -h RDSエンドポイント -P 3306 -u ユーザ名 -p
  • アプリケーションは正常に表示できている
    EC2で設定したElastic IPにブラウザでアクセスしたところ正常に表示できている

  • ユーザー登録や投稿を行おうとするとエラーが発生する
    しかしながら上記の通りDBに保存が発生するアクションが発生すると下記のようなエラーが発生する

エラー画面.png

原因

下記ログを確認したところ文字コードによる文字化けが発生しておりました。

/var/www/アプリケーション名/current/log/production.log
//一部抜粋
F, [2019-06-12T10:04:33.736907 #29116] FATAL -- : [8aa6dabe-fac5-4afa-8c4c-752532c49217] ActiveRecord::StatementInvalid (Mysql2::Error: Incorrect string value: '\xE3\x81\xAF\xE3\x82\x80...' for column 'nickname' at row 1: INSERT INTO `users` (`nickname`, `email`, `encrypted_password`, `created_at`, `updated_at`) VALUES ('はむ太郎', 'test@test.com', '$2a$11$AIOoTtfj8lzGvmxnqmHBzO7bpKt8J3fyDe3sCQN0y.DWFW8cF5hHC', '2019-06-12 10:04:33', '2019-06-12 10:04:33')):

//この部分が文字化け箇所
'\xE3\x81\xAF\xE3\x82\x80...'

日本語ではこういった症状が発生するようです。

対策

  • パラメータグループの設定
  • DBの文字コード変更
  • /etc/my.cnfの設定

上記の対応により改善しました。
DB作成前であればパラメータグループの設定のみで文字化けは発生しないようです。
すでにDB作成後であれば他変更も必要となります。
下記や「RDS 文字化け」を検索すると参考になるページが見つかると思います。

MySQL 文字化けを防ぐ、文字コードの確認と設定
日本人ならRDSを使う際にかならずやらなければならないこと
MySQL のテーブルの文字コードを utf8 に変更する

以上です。
いいねやQiitaやTwitterのフォローいただけると励みになります!
お気軽にどうぞ〜

お疲れ様でした!!!


参考ページ

MySQL 文字化けを防ぐ、文字コードの確認と設定
日本人ならRDSを使う際にかならずやらなければならないこと
MySQL のテーブルの文字コードを utf8 に変更する

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2