Django マイグレーションを元に戻す方法

Djangoでマイグレーションを実行したが、ミスが発覚したため元に戻したい時があります。

修正用のマイグレーションファイルを作らなくても、コマンドで簡単に元に戻す事ができます。

今回は、マイグレーションを元に戻す方法を紹介します。

migrateコマンド

migrateコマンドを使って、マイグレーションを元に戻す事ができます。

django-admin migrate [app_label] [migration_name]

マイグレーションを適用するときは、引数なしや、[app_label]のみを指定して実行する事が多いです。

マイグレーションを元に戻す場合は、[app_label] と [migration_name] の両方を指定します。

データベーススキーマを指定した[migration_name]が適用される状態まで戻します。

例)adminアプリの場合

Djangoにはデフォルトでadminアプリがインストールされています。このadminアプリのマイグレーションを用いて解説します。

adminアプリには以下の3つのマイグレーションが全て適用されているとします。

0001_initial
0002_logentry_remove_auto_add
0003_logentry_add_action_flag_choices

0002_logentry_remove_auto_addが適用されている状態まで戻したいときは、次の様に入力します。

django-admin migrate admin 0002_logentry_remove_auto_add

全て戻したい場合は、zeroを使います。

django-admin migrate admin zero

マイグレーションの適用状況の確認方法

マイグレーションの適用状況を確認したい場合は、以下のコマンドを実行します。

./manage.py showmigrations

インストールされているアプリ毎に以下の様な実行結果になります。

適用されているマイグレーション名には、左側に [X] がついています。 

admin
 [X] 0001_initial
 [X] 0002_logentry_remove_auto_add
 [ ] 0003_logentry_add_action_flag_choices

不要になったマイグレーションファイルを削除

migrateコマンドを使って、巻き戻したい状態までデータベーススキーマを変更した後は、不要になったマイグレーションファイルを削除して下さい。

スポンサーリンク
スポンサーリンク