Django移行の初期化
2947 ワード
いつ使いますか.
モデル内のテーブルまたはフィールド名を変更すると、制約および外部キーオプションに移行できない場合があります.この問題を解決するには、移行を初期化します.
SQL文に直接変更できますが、ORMを使用するにはモデルの移行が必要になる場合があります.
Case 1. データベースを削除する場合
注:この手順では、移行ファイルとデータベースが削除されます.
情報:Linux、MacOSオペレーティングシステム、MySQLに基づいています.
1.移行の削除
次のコマンドを入力して、
端末に
次のコマンドを使用して、現在のデータベースをDropします.
3.移行の作成と反映(FIN.)
移行を作成および移行するには、次のコマンドを入力します.
注:この手順を実行すると、移行ファイルが削除されます.
1.待機中の移行の確認
端末上の
次のコマンドを入力して、待機中の移行ファイルがあるかどうかを確認します.
移行履歴を削除するには、ターミナルに次のコマンドを入力します.
次のコマンドを入力して、
ターミナルに次のコマンドを入力して、最初の移行を作成します.
データベースは既に存在するため、最初の移行ファイルは移行されません.
ただし、キューに並んでいる移行ファイルを削除する必要があるため、次のコマンドを使用して偽の移行を行うことができます.
モデル内のテーブルまたはフィールド名を変更すると、制約および外部キーオプションに移行できない場合があります.この問題を解決するには、移行を初期化します.
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
Reference
この問題について(Django移行の初期化), 我々は、より多くの情報をここで見つけました https://velog.io/@sh007jeong/django-migration-initializeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol