【Django】Migrationsのリセット方法

データベース内のデータを残したまま、DjangoのMigrationsをリセットする方法

リセット前の確認

まずは既存のmodelsがデータベースに適合しているか確認を実施。

python manage.py makemigrations

コマンド実行後にエラーがなければOK。
Migrations処理が残ってないかも確認。
「No changes detected」が表示されていることを確認。

Migrations履歴を確認

Migrationsの履歴を確認。

python manage.py showmigrations

Migrations履歴を削除

Migrationsの履歴を削除するために下記コマンドを実行

python manage.py migrate --fake XXX zero

XXXの部分はアプリ名を指定

Migrations履歴が削除されたか確認

Migrationsの履歴が削除されているか履歴を確認。

python manage.py showmigrations

Migrationsの履歴が削除された項目の「[X]」が「[ ]」に変更になっていることを確認。

Migrationsファイルを削除

該当アプリのmigrationsディレクトリ内にある「__init__.py」以外のファイルを削除

Migrationsファイルを再作成

Migrationsファイルを削除したので、新たにMigrationsファイルを作成します。

python manage.py makemigrations

migrateを実行

新たに作ったmigrationsファイルをmigrateを実行して反映するが、既にデータベースのテーブルが存在するので、fakeコマンドで実行

python manage.py migrate --fake-initial