Django移行の初期化

2947 ワード

いつ使いますか.
モデル内のテーブルまたはフィールド名を変更すると、制約および外部キーオプションに移行できない場合があります.この問題を解決するには、移行を初期化します.
SQL文に直接変更できますが、ORMを使用するにはモデルの移行が必要になる場合があります.
Case 1. データベースを削除する場合
注:この手順では、移行ファイルとデータベースが削除されます.
情報:Linux、MacOSオペレーティングシステム、MySQLに基づいています.
1.移行の削除cdコマンドを使用して、端末からプロジェクトディレクトリに移動します.
次のコマンドを入力して、__init__.pyファイルを除くすべての移行ファイルを削除します.
$ find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
$ find . -path "*/migrations/*.pyc" -delete
2.データベースの削除
端末にmysql -u root -pコマンドとデータベースパスワードを入力します.
次のコマンドを使用して、現在のデータベースをDropします.
$ DROP DATABASE <데이터베이스 이름>;
quit;コマンドを使用してMySQLを終了します.
3.移行の作成と反映(FIN.)cdコマンドを使用して、manage.pyを含むディレクトリに移動します.
移行を作成および移行するには、次のコマンドを入力します.
$ python manage.py makemigrations
$ python manage.py migrate
Case 2. データベースを保持する場合
注:この手順を実行すると、移行ファイルが削除されます.
1.待機中の移行の確認
端末上のcdコマンドを使用して、manage.pyを含むディレクトリに移動します.
次のコマンドを入力して、待機中の移行ファイルがあるかどうかを確認します.
$ python manage.py makemigrations
次の操作を実行するよう求められた場合:
No changes detected
2.移行履歴の削除
移行履歴を削除するには、ターミナルに次のコマンドを入力します.python manage.py showmigrationsコマンドを使用して、削除前にタイムラインを確認します.
$ python manage.py migrate --fake <App 이름> zero
3.移行の削除cdコマンドを使用して、端末からプロジェクトディレクトリに移動します.
次のコマンドを入力して、__init__.pyファイルを除くすべての移行ファイルを削除します.
$ find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
$ find . -path "*/migrations/*.pyc" -delete
4.移行の作成
ターミナルに次のコマンドを入力して、最初の移行を作成します.
$ python manage.py makemigrations
5.反映遷移(FIN.)
データベースは既に存在するため、最初の移行ファイルは移行されません.
ただし、キューに並んでいる移行ファイルを削除する必要があるため、次のコマンドを使用して偽の移行を行うことができます.
$ python manage.py migrate --fake-initial