2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

初心者向け)HerokuでDjangoをデプロイ後のマイグレートがうまくいかない場合のチェックポイント

Last updated at Posted at 2021-10-02

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 -

現場からは以上です。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?