【问题标题】:PostgreSQL Django migrate error - domain already exitsPostgreSQL Django 迁移错误 - 域已存在
【发布时间】:2016-02-03 21:51:23
【问题描述】:

我已经建立了一个新的 Django 项目(基于模板 django cookie cut),但是在第一次尝试迁移数据库时遇到 postgres 错误

psycopg2.ProgrammingError: relation "django_site_domain_a2e37b91_uniq" already exists

我不清楚问题是什么或如何最好地诊断?

【问题讨论】:

  • 您的设置中有 SITE_ID 吗?
  • 感谢 SITE_ID 给了我需要的提示,我与另一个项目发生了冲突。
  • 我有这个确切的问题,但我只有一个项目。能否请您详细说明要查找的内容?
  • 你是怎么解决的?

标签: django postgresql


【解决方案1】:

What is SITE_ID?

Django 是从一家报纸开发的一组脚本创建的 在多个域上发布内容;使用一个单一的内容库。

这就是“站点”模块的用武之地。它的目的是标记 为不同域显示的内容。

在以前的django版本中,startproject脚本会自动启动 将 django.contrib.sites 应用程序添加到 INSTALLED_APPS,以及何时 你做了syncdb,一个带有URL example.com的默认站点被添加到 你的数据库,因为这是第一个站点,它的 ID 是 1 并且 这就是设置的来源。

请记住,从 1.6 开始,此框架不再启用 默认。所以如果你需要它,你必须启用它

SITE_ID 设置为您的项目设置默认站点。所以,如果你 不要指定站点,这是它将使用的站点。

解决方法:

递增SITE_ID:

1. Increment `SITE_ID` variable in settings.py
2. python manage.py makemigrations
3. python manage.py migrate --run-syncdb

缺点:必须在没有充分理由的情况下增加 SITE_ID

尝试在没有--run-syncdb 的情况下迁移:

1. python manage.py makemigrations
2. python manage.py migrate

注意:可能需要多次尝试才能生效。不知道为什么,可能是因为我正在删除pvc

【讨论】:

  • 附加说明:可能是第二步有效,因为我事先执行了第一步 - 这意味着当从 SITE_ID 1 -> 1 迁移到 1 -> 2 然后 2 -> 时会发生错误1 避免问题
猜你喜欢
  • 2019-11-17
  • 2014-11-13
  • 2018-01-08
  • 2015-04-28
  • 2011-03-31
  • 2021-01-09
  • 2021-09-23
  • 1970-01-01
  • 2016-02-14
相关资源
最近更新 更多