social-auth-app-djangoの依存関係が原因でマイグレーションできなくなったのを修正する方法

マイグレーションを初期化して再度マイグレーションを実行した時に、 social-auth-app-django の依存関係が原因でマイグレーションできなくなりました。

エラーメッセージは次のようになっていました。

django.db.migrations.exceptions.InconsistentMigrationHistory: Migration social_django.0001_initial is applied before its dependency my_app.0001_initial on database 'default'.

解決方法をメモします。

修正方法

social-auth-app-django の前に、依存関係にあるアプリケーション側のUserモデルをマイグレーションします。

  1. settings.pyのINSTALLED_APPSを一時的に修正
  2. マイグレーションを実行
  3. settings.pyを元に戻す
  4. 再度マイグレーションを実行

という手順になります。

settings.pyの修正

INSTALLED_APPSの ‘social_django’, をコメントアウトします。

INSTALLED_APPS = [
...
    # 'social_django',
...
]

この状態で showmigrations を実行すると、social_django関連のモデルがないことがわかります。

マイグレーションの実行

マイグレーションを実行します。

python manage.py makemigrations
python manage.py migrate

settigs.pyを元に戻す

コメントアウトした ‘social_django’, の行をコメントインします。

マイグレーションの再実行

再度、マイグレーションを実行して完了です。

まとめ

少しずつ臨機応変に対応できるようになってきました。やったね!