AWSのEC2インスタンスにカラム名の変更が反映されているのに変更前のカラム名がunknown attributeだというエラーが出る


起きたこと

データベースのカラムを変更するため、マイグレーションファイルを書き換えました。
その後、自動デプロイツールであるCapstranoでデプロイを更新しました。
動作を確認したところ、カラムを変更したフォームに入力する画面に遷移しようとした時に、unknown attributeというエラーが出ました。

結論

teratailで質問をしたところ「アプリケーションサーバーの再起動はできているのか」とアドバイスいただきまして、Unicornのプロセスを確認したところ起動していませんでした。
Uniconが起動していなかった原因はわかりませんが、起動したところエラーがなくなり変更したカラムにも値が保存されるようになりました。下の図のようにアプリケーションサーバーが起動していなかったため、ビューなどは表示できたが、処理を行ったりDBへアクセスができずエラーになったと考えました。

teratailでの質問:https://teratail.com/questions/304282

質問前に行ったこと3つ

1. DBのカラム名確認

EC2内のDBであるMariaDBの中身を確認しました。

[ec2-user@ip-..... ~]$ mysql -u root -p

でデータベースにアクセスした後は

USE アプリ名_production

でデータベースを指定し、

DESCRIBE テーブル名

で確認するとカラムがみられます。
これでチェックしたところ、変更されていました。

2.データベースとWebサーバーのリスタート

[ec2-user@ip-・・・・ ~]$ sudo systemctl restart mariadb 
[ec2-user@ip-・・・・ ~]$ sudo systemctl restart nginx

これでも変わりませんでした。

3. データベースをリセット

投稿していた中身は消えてしまいますが、以下の記事を参考に、EC2インスタンスのcurrentディレクトリに移動した後、以下の4つを実行してリセットしました。

$ RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:drop
$ rake db:create RAILS_ENV=production
$ rake db:migrate RAILS_ENV=production
$ rake db:seed RAILS_ENV=production

参考:https://qiita.com/iczo32/items/84719b5aff8a6b9e37bd

以上