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コマンドを使って、巻き戻したい状態までデータベーススキーマを変更した後は、不要になったマイグレーションファイルを削除して下さい。
コメントを残す