この記事は 約 1分36秒 で読めます。
makemigrationsしてmigrateしても反映されないときは、一旦設定情報をリセットして再度migrateするとうまくいくときがあります。
migrationの設定情報をリセットする
まずは対象のアプリケーションをリセットします。
1 |
python manage.py migrate --fake アプリケーション名 zero |
その後、showmigrationsをすると
1 |
python manage.py showmigrations |
以下のようにチェックが外れると思います。
1 2 |
アプリケーション名 [ ] 0001_initial |
ファイルを削除する
対象のアプリケーションフォルダ内のmigrationsフォルダの「__init__.py」ファイル以外のファイルを削除します。
※__pycache__フォルダも含む
その後は、通常通り「makemigratios」→「migrate」コマンドを叩けば
DBに反映されると思います。
上記の手順を行っても、エラーがでてうまく反映されない場合は
モデルに追加したフィールドに「null=True」を設定してみるとうまくいくかもしれません。
僕の場合
・モデルにフィールドを追加
・makemigrationsする
・ターミナルでデフォルトの値をどうするか決めてくれと言われる
・無視してmigrationsフォルダのファイルを削除する
↓
・これ以降、何をしてもmigrateで反映してくれなくなってしまう。
というパターンが多く、
おそらくモデルに新しいフィールドを追加したときにデフォルト値を決めるか、「null=True」を設定すれば、こういう事態にはならないのかなと予想してます。
詳しい人からしたら、何を言っているんだという事案なんでしょうが…(笑)