目的
Djangoのmodels.pyでモデルを作成し、マイグレーションを行ったものの間違いを見つけて修正したい。しかし一箇所を直すためにmigrationファイルを作成するのもあとで保守がしづらくなると考え、前回(もしくはそれ以前)のバージョンに戻して情報を編集したい。
実施環境
ハードウェア環境
項目 | 情報 |
---|---|
OS | macOS Catalina(10.15.7) |
ハードウェア | MacBook Air (11-inch, Early 2015) |
プロセッサ | 1.6 GHz デュアルコアIntel Core i5 |
メモリ | 4 GB 1600 MHz DDR3 |
グラフィックス | intel HD Graphics 6000 1536 MB |
ソフトウェア環境
項目 | 情報 |
---|---|
homebrew | 3.3.8 |
mysql | Ver 8.0.27 for macos10.15 on x86_64 |
python | 3.8.12 |
anaconda | 4.10.1 |
django | 21.2.4 |
pip | 3.1.2 |
概要
-
python manage.py showmigration
でこれまでのmigrationの履歴を確認する -
python manage.py migrate app_name migration_version_name
migrationのバージョンを指定して戻る - 最新のマイグレーションファイル(/migrations/配下の番号が一番古いもの)を直接削除
詳細
これまでのmigrationの履歴を確認する
$ python manage.py showmigrations
tinder
[X] 0001_initial
[X] 0002_auto_20211219_1625
[X] 0003_auto_20211223_1038
[X] 0004_hotguys
ここからtinderというデータベースには4つのマイグレーションファイルが存在し、Xが左についている全てのマイグレーションが現在のアプリに反映されていることがわかる。
今回は一個前のマイグレーションに戻したいため、0003_auto_20211223_1038まで戻ることとする。
migrationのバージョンを指定して戻る
python manage.py migrate アプリ名 マイグレーション名
で戻る
$ python manage.py migrate tinder 0003_auto_20211223_1038
Operations to perform:
Target specific migration: 0003_auto_20211223_1038, from tinder
Running migrations:
Rendering model states... DONE
Unapplying tinder.0004_hotguys... OK
完了しているため、もう一度マイグレーションの反映状況を確認。
$ python manage.py showmigrations
tinder
[X] 0001_initial
[X] 0002_auto_20211219_1625
[X] 0003_auto_20211223_1038
[ ] 0004_hotguys
0004_hotguysの左には[X]がないため、反映されていないことがわかる
最新のマイグレーションファイルを直接削除
/migration/配下の0004_hotguysファイルを右クリックで削除する
お決まりの確認だ。
$ python manage.py showmigrations
tinder
[X] 0001_initial
[X] 0002_auto_20211219_1625
[X] 0003_auto_20211223_1038
反映され、消えている!!!