LoginSignup
0
0

More than 1 year has passed since last update.

【500エラー】【AWS】RDSに日本語が保存できない問題 Rails on Docker

Posted at

docker環境でrails6アプリを構築し、苦労してようやくEC2上にアプリをデプロイできたと思ったら、
何故かdeviseのユーザー登録時メール認証機能(comfirmable)、お問い合わせメール機能、ゲストログイン機能が500エラー。。。
メールに関する部分だけがエラーになっているからてっきりSMTPサーバーが機能していないのかな?などと推測し、
SESの設定を見直すも・・・・
解決できず。。

原因:RDSで作成したMySQLのDBに日本語が保存できないこと

RDSではDefaultでcharacter-setにlatin1が割り当てられるため、日本語を利用する際はutf8などに変更してあげる必要があったのでした。
そのためRDSで設定したMySQLに関するエラーが発生していました。
それに気づかずてっきりSMTPサーバー関係のエラーだと決めつけて数日もがいてました。。
そもそも私はログイン済みユーザーじゃないと新規投稿機能だったりフォローだったり、全ての機能を利用できないように制限をかけていたので
他のページの確認ができていなかったのですが、
本当はメールに関する部分だけがエラーになっていたのではなくて、
全体がエラーになっていたんだと思います。。。

解決につながったこと:エラーログの確認

エラーがどこで発生しているのか、原因の切り分けも大事ですが、エラーログを確認することが何より最も重要だと気づかされました。
docker環境でつくったアプリをEC2にデプロイしたら、本番環境のみエラーになってしまう。
開発環境ではエラーないのに。
その場合はどこでエラーログを見られるの??
そもそもエラーログ出す方法なんてないんじゃないか??
などと一週間くらいパニック状態でしたが(笑)

ログの出し方が分かったことで2、3時間くらいで解決できてしまいました!!!

エラーログの出し方

[ec2]$ cd /var/www/アプリ名
[ec2]$ docker-compose exec app bash
root@f4658ed2b15e:/var/www/アプリ名# cd /var/www/アプリ名
root@f4658ed2b15e:/var/www/アプリ名# ls
root@f4658ed2b15e:/var/www/アプリ名# cd log
root@f4658ed2b15e:/var/www/アプリ名/log# ls
root@f4658ed2b15e:/var/www/アプリ名/log# tail -f production.log

tail -fを使うことで、ページにアクセスしたときのエラーをリアルタイムで見ることができて便利です。

解決策:RDSの設定変更

下記記事の通りに設定したら解決しました。ありがとうございます!

0
0
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
0
0