1. ホーム
  2. python

django_content_type already exists' を解決するにはどうしたらいいですか?

2023-10-25 19:22:27

質問

django 1.8 にアップグレードした後、マイグレーション中にエラーが発生しました。

ProgrammingError: relation "django_content_type" already exists

このエラーの背景に興味があるのですが、もっと重要なことがあります。 どうすれば解決できるのでしょうか?

どのように解決するのですか?

プロジェクトの初期マイグレーションは --fake-initial を使ってトラブルシューティングできることがあります。

python manage.py migrate --fake-initial

1.8での新機能です。1.7では、-fake-initialは暗黙のデフォルトでしたが、1.8では明示的になっています。

Docsから。

fake-initial オプションは、Django がアプリの最初のマイグレーションをスキップする際に、そのマイグレーションにおける全ての CreateModel 操作によって作成された全てのモデルの名前を持つ全てのデータベーステーブルが既に存在する場合に使うことができます。このオプションは、migrations を使う以前のデータベースに対して初めて migrations を実行するときに使うことを意図しています。しかし、このオプションは、テーブル名の一致を超えてデータベース スキーマの一致をチェックしないため、既存のスキーマが最初の移行で記録されたものと一致することが確実な場合にのみ使用するのが無難です。

https://docs.djangoproject.com/en/1.8/ref/django-admin/#django-admin-option---fake-initial