Django で migrate をしたあと、途中からやり直したいときに行う手順を備忘録として残します。
目次
マイグレーション履歴を確認
python manage.py showmigrations
でマイグレーションの実行履歴を確認します。
// python manage.py showmigrations <app>
$ python manage.py showmigrations samplesite
samplesite
[X] 0001_initial
[X] 0002_add_article
[X] 0003_fix_article
戻したいところまでロールバックする
python manage.py migrate <app> <file>
でロールバックします。
<file> は戻したいファイルのひとつ前のものを指定します。
// python manage.py migrate <app> <file>
// 0002_add_article 以降をやり直したい場合、<file> に 0001_initial を指定する
$ python manage.py migrate samplesite 0001_initial
Running migrations:
Rendering model states... DONE
Unapplying samplesite.0003_fix_article... OK
Unapplying samplesite.0002_add_article... OK
// 0002_add_article 以降の実行が取り消される
$ python manage.py showmigrations samplesite
samplesite
[X] 0001_initial
[ ] 0002_add_article
[ ] 0003_fix_article
file を削除
<app>/migrations フォルダにある、戻したところまでのファイルを削除します。
マイグレーションファイルの作成と実行
python manage.py makemigrations
でマイグレーションファイルを作成し、python manage.py migrate
で実行します。
$ python manage.py makemigrations samplesite --name article
$ python manage.py migrate samplesite
$ python manage.py showmigrations samplesite
samplesite
[X] 0001_initial
[X] 0002_article