目的
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_namemigrationのバージョンを指定して戻る - 最新のマイグレーションファイル(/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
反映され、消えている!!!