makemigrations/migrateの使い方がいまいちわかっていません。
まずは、下記コードをご覧下さい。
コードの途中途中に質問を挟んであります。
状況としては、今まで普通に使っていたDjangoのシステムで、makemigrations/migrateが失敗しました。
Python
1>>> python3.6 manage.py makemigrations 2 3Traceback (most recent call last): 4...省略... 5django.db.migrations.exceptions.InconsistentMigrationHistory: Migration myapp.0017_xxxxx is applied before its dependency myapp.0016_xxxxx on database 'default'
質問1:このエラー内容は何ですか?
となったので、下記を実行
Python
1rm -rf myapp/migrations/*
してから
Python
1>>> python3.6 manage.py makemigrations 2Migrations for 'myapp': 3 myapp/migrations/0001_initial.py 4 -Create model XXXX1 5 -Create model XXXX2 6 ...省略...
となって、一見うまくいったので、下記を実行
Python
1>>> python3.6 manage.py migrate 2 3Operations to perform: 4 Apply all migrations: admin, auth, contenttypes, django_db_logger, myapp, sessions 5Running migrations: 6 No migrations to apply. 7 Your models have changes that are not yet reflected in a migration, and so won't be applied. 8 Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them.
質問2:このエラー内容は、「もう一度makemigrationsしろ」ということでいいですか?
となったので、もう一度下記を実行
Python
1>>> python3.6 manage.py makemigrations 2 3Migrations for 'myapp': 4 myapp/migrations/0002_auto_20181212_1310.py 5 -Create model YYYY1 6 -Create model YYYY2 7 ...省略...
と出力され、先ほどのmakemigrationsとは違う内容が出力されました。
質問3:なぜ、先ほどのmakemigrationsとは違う内容が出力されたのでしょうか?models.pyもDBもいじっていません
ここで、もう一度下記を実行
Python
1>>> python3.6 manage.py migrate 2 3Operations to perform: 4 Apply all migrations: admin, auth, contenttypes, django_db_logger, myapp, sessions 5Running migrations: 6 Applying myapp.0002_auto_20181212_1310...Traceback (most recent call last): 7 ...省略... 8django.db.utils.OperationalError: (1050, "Table 'myapp_YYYY1' already exists")
となって、対処法がわからなかったので下記を実行
質問4:対処法は下記であっていますか?また、--fakeを付けると、全ての変更が無視されるのですか?それとも、エラーが出るところだけ、自動的に判別して、その個所は無視してくれるのでしょうか?
Python
1python3.6 manage.py migrate --fake
としたら、ひとまずエラーは出ませんでした。
質問5:結局の所、どう対処するのが正解だったのでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。