Help us understand the problem. What is going on with this article?

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

起きたこと

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

結論

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

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

以上

magatama
2020年8月〜Ruby,Ruby on Rails, JavaScriptの勉強を開始。28歳男。未経験からweb系エンジニアへ転職できるよう勉強中です。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away