6

知道为什么我在尝试迁移时会收到此错误吗?

django.db.utils.ProgrammingError:关系“django_content_type”

我正在使用 Django 1.8 和 PostgreSql

4

4 回答 4

8

迁移时您将需要使用该--fake-initial选项;它曾经是隐含的,但现在已经明确了:

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

去引用:

此选项适用于首次对已使用迁移的数据库运行迁移时使用。

祝你好运!

于 2015-06-16T19:35:54.207 回答
6

这对我有用:

  1. ./manage.py migrate auth --fake-initial (这会引发错误但忽略它)

  2. ./manage.py 迁移 --fake-initial

于 2015-08-24T10:31:31.840 回答
5

我和许多人一样,并不真正理解这个问题。我能够设计出适合我的解决方案。

  1. 注释掉所有自定义安装的应用程序。所以,你只有 Django 的东西。
  2. 仅迁移身份验证:./manage.py migrate auth
  3. 迁移其他所有内容:./manage.py migrate
  4. 撤消步骤 1。
  5. 迁移您的所有应用程序:./manage.py migrate.

祝你好运!

于 2015-08-02T20:22:11.297 回答
4

@Josh 的解决方案对我进行了以下更改。在第 1 步之前,我重新添加了缺失的列:

ALTER TABLE django_content_type ADD COLUMN name character varying(50) NOT NULL DEFAULT 'run migrate.py';

运行python manage.py migrate auth会删除此列,可能是进行了一项或多项其他更改,这些更改在早期运行的migrate.

migrate在步骤 3 中运行时,我包含了--fake-initial标志:

python manage.py migrate --fake-initial

一切似乎又恢复了正常。

于 2016-05-01T17:43:16.247 回答