0
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?

個人的備忘録:Djangoのマイグレーションが適用されないときの解決策を自分なりにまとめてみた

Last updated at Posted at 2025-02-24

はじめに

Djangoで開発を進めていると、データベースの変更を反映するためのマイグレーションが正しく適用されないことがあります。

特に、No migrations to apply. というメッセージが表示されたときは、どこで問題が起きているのか確認する必要があります。

本記事では、マイグレーションが適用されない場合の確認方法と解決策を解説します。

書こうと思ったきっかけ

Djangoを使った開発の中で、マイグレーションに関する問題に何度も遭遇しました。

特に、モデルを変更したはずなのに適用するべきマイグレーションが見つからないといった状況が発生すると、原因を特定するのに時間がかかることがあります。

そこで、よくある原因と解決策をまとめることで、同じ問題に直面した人の助けになればと思い、この記事を書くことにしました。

Djangoのマイグレーションが適用されないときの解決策

Djangoでマイグレーションを適用しようとした際に、以下のようなメッセージが表示されることがあります。

Operations to perform:
  Apply all migrations: accounts, admin, auth, contenttypes, sessions, xxx
Running migrations:
  No migrations to apply.

このメッセージは、適用すべき新しいマイグレーションがないことを意味しています。

とはいえ、実際にはモデルを変更したのにマイグレーションが適用されていない場合もあります。

そのようなときに確認すべきポイントを解説します。

1. 既存のマイグレーションを確認する

まず、データベースに適用済みのマイグレーションを確認します。

python manage.py showmigrations

このコマンドを実行すると、各アプリのマイグレーション一覧が表示され、適用済みのものには [X] がついています。

2. 新しいマイグレーションが必要か確認する

モデル (models.py) に変更を加えたのにマイグレーションが作成されていない場合、以下のコマンドを実行してください。

python manage.py makemigrations

もし No changes detected と表示される場合、以下の点を確認してください。

  • モデル (models.py) に本当に変更を加えたか?
  • アプリが INSTALLED_APPS に含まれているか? (settings.py で確認)
  • マイグレーションフォルダ (migrations/) が正しく生成されているか?

3. マイグレーションを適用する

makemigrations によって新しいマイグレーションが作成されたら、次のコマンドで適用します。

python manage.py migrate

この時点でエラーが出る場合、エラーメッセージを確認して適切に対処してください。

4. マイグレーションのリセット(必要な場合)

データベースの状態が不整合になっている場合、マイグレーションをリセットして再適用できます。

python manage.py migrate --fake xxx zero
python manage.py migrate xxx

注意: --fake オプションを使うと、Django はマイグレーションが適用されたと「見なす」だけで、実際のデータベース変更は行いません。データの消失には注意しましょう。

5. データベースの状態を確認する

もし migrate を実行しても変更が反映されない場合、データベースの状態を直接確認します。

python manage.py dbshell

または、手動でデータベースに接続し、django_migrations テーブルを確認します。

SELECT * FROM django_migrations WHERE app = 'xxx';

このテーブルに xxx アプリのマイグレーション履歴がない場合、適用が正しく行われていない可能性があります。

まとめ

  1. showmigrations でマイグレーションが適用されているか確認
  2. makemigrations で新しいマイグレーションを作成
  3. migrate で適用
  4. 必要なら migrate --fake でリセット
  5. データベースの状態をチェック

Djangoのマイグレーションは、プロジェクトのデータベース管理において重要な作業の一つです。

適用されない場合は焦らずに、上記の手順を順番に試して、問題を特定して解決していきましょう!

0
1
1

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
0
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?