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
以上
Author And Source
この問題について(AWSのEC2インスタンスにカラム名の変更が反映されているのに変更前のカラム名がunknown attributeだというエラーが出る), 我々は、より多くの情報をここで見つけました https://qiita.com/magatama/items/17caf04d875ab66ae861著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .