記事概要
本番環境のRenderにあるテーブルが変更されない場合の対応方法について、まとめる
事象
Renderのテーブルに変更が反映されない
- カラムの追加などのテーブルの変更を行った
- ローカルでは、変更内容が正しく反映する
- Renderでデプロイを行った際、エラー発生しない
対応方法
注意点:作業前のデータは全て削除されるため、データが全消去されても問題ない場合のみ実行する
- Renderで作成したデータベースをリセットするため、VSCodeでファイルを修正する
bin/render-build.sh
#!/usr/bin/env bash # exit on error set -o errexit bundle install bundle exec rake assets:precompile bundle exec rake assets:clean # bundle exec rake db:migrate DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:migrate:reset
-
DISABLE_DATABASE_ENVIRONMENT_CHECK=1
は、本番環境のデータベースを削除するために必要な設定。通常は削除できないようになっている -
bundle exec rake db:migrate:reset
は、データベースをリセットするためのコマンド。下記3つを実行したことになる- rake db:drop(データベースの削除)
- rake db:create(データベースの作成)
- rake db:migrate(マイグレーションファイルの実行)
-
- TablePlus.appを終了する
- GitHubにプッシュして更新する
- GitHubにコードをプッシュすると、Renderのデプロイが実行される
- デプロイ完了後、アプリを操作したり、TablePlusでテーブルの内容を確認する
※正しく変更されていることを確認 - 1.の修正を元に戻すため、VSCodeでファイルを修正する
bin/render-build.sh
#!/usr/bin/env bash # exit on error set -o errexit bundle install bundle exec rake assets:precompile bundle exec rake assets:clean bundle exec rake db:migrate