Navigation

Related Articles

Back to Latest Articles

Djangoでマイグレーションをやり直す


press
Djangoでマイグレーションをやり直す

Djangoでマイグレーションをやり直す

Djangoで開発中にマイグレーションを元に戻したり(ロールバック)、やり直したくなった時の方法です。部分的に戻す方法と初期化したい方法の2パターンを紹介します。

開発環境

Python 3.8.0
Django 3.1

.
├── app
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── db.sqlite3
├── manage.py
├── rollback_migration
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── templates

まずはじめに、以下のコマンドでマイグレーション履歴を確認します。

python manage.py showmigrate

今回、作成したappというアプリケーションには0001から0003までマイグレーション履歴があります。

admin
 [X] 0001_initial
 [X] 0002_logentry_remove_auto_add
 [X] 0003_logentry_add_action_flag_choices
app
 [X] 0001_initial
 [X] 0002_app_title
 [X] 0003_app_active
auth
 [X] 0001_initial
...

マイグレーションのロールバック

以下のコマンドで0001_initialまで戻ります(ロールバック)します。

python manage.py migrate app 0001_initial

以下のコマンドでロールバック出来ているか確認します。

python manage.py showmigrate

Xが消えているのが確認出来たら過去のマイグレーション(0001_initial)まで戻れています。

admin
 [X] 0001_initial
 [X] 0002_logentry_remove_auto_add
 [X] 0003_logentry_add_action_flag_choices
app
 [X] 0001_initial
 [ ] 0002_app_title
 [ ] 0003_app_active
auth
 [X] 0001_initial
...

migrationsディレクトリにある不要になったマイグレーションファイルを削除します。今回は0001_initialに戻ったので、0001_initial以降を削除します。
※__init__.pyは消さない様に注意してください。

マイグレーションの初期化

上記の様に部分的に戻すのではなく完全に初期化したい場合は以下のコマンドで初期化できます。

python manage.py migrate app zero

python manage.py showmigrateで確認するとappのマイグレーションが初期化されているのが分かります。

admin
 [X] 0001_initial
 [X] 0002_logentry_remove_auto_add
 [X] 0003_logentry_add_action_flag_choices
app
 [X] 0001_initial
auth
 [X] 0001_initial
...

当ブログは群馬県でPython / Djangoを中心にウェブアプリケーションを開発している株式会社ファントムが運営しています。

株式会社ファントムへのお問い合わせ




Show Comments (0)

Comments

Related Articles

Django

pandasで読み込んだCSVの値がNaNだったときの対処方法

DjangoのWEBプリケーションでCSVをpandasで読み込んでforで一行ずつループ処理をしたところ、毎回決まったところで決まったエラーが出たのでPyCharmのデバッグ機能を使って原因を調べた内容です。 プログラ […]

Posted on by press
Django

That port is already in use.が表示された時の対処法

Djangoでrunserverコマンドを使って開発用サーバーを起動した時にError: That port is already in use.が表示された時の対処法です。 Error: That port is al […]

Posted on by press