Herokuへデプロイが成功したから マイグレート実行したけどうまくいかないとき
Herokuへデプロイしたあとに、Heroku側で設定したデータベースに対してマイグレートしmodelsの設定を反映をする必要があります。しかしheroku CLIで接続し、makemigrationsとmigrateを実行してみてもデータベースにテーブルが設定されないことがありました。
まずはherokuへログインします。ブラウザが開いてログインするかどうかの確認メッセージが表示されるので、素直にオーケー。
heroku login
その後にpythonでmakemigrationsとmigrateを実行してみました。
heroku run -a アプリ名 python manage.py makemigrations
heroku run -a アプリ名 python manage.py migrate
makemigrationsはうまく動いた風に見えるのですが、migrateを実行しようとすると「先にmakemigrationsを実行してね」というメッセージが表示され、PostgreSQLにmodelsの設定が反映されません。
###herokuでmakemigrationsを実行してもダメ
原因としてはherokuでmakemigrationsを実行してもmigrationファイルが作成されていないってことです。
そのため、migrateを実行しようとしても「さきにmakemigrationsを実行してね」というメッセージが出たわけですね。
###解決策は
ということで、うまくmigrateを実行完了させるためには、ローカルでmakemigrationsを実行し、そこで作成されたmigrationファイルをherokuへデプロイ後にmigrateを実行すればオーケーです。
###おまけ
わたしの場合、Procfileにmigrateを実行するように指定しているので、普通にデプロイすれば勝手にデプロイファイルに含まれるmigrationファイルを参照してmigrateを実行してくれるのでラクチンです。
Procfile
release: python manage.py migrate
web: gunicorn プロジェクトアプリディレクトリ名.wsgi --log-file -
現場からは以上です。