繁体   English   中英

Django 中关系不存在错误

[英]Relation does not exist error in Django

我知道关于这个问题有很多问题,我查看了解决方案,但不幸的是,没有一个对我有用。

我创建了一个名为“usermanagement”的新应用程序,并向该应用程序添加了一个 model。 添加 model 后,我将用户管理添加到设置中的 INSTALLED_APPS。 然后我运行了 python manage.py makemigrations 和 python manage.py migrate。 这一切都很好。 我也确实尝试使用应用程序名称运行迁移。

当我尝试通过使用以下方法将 model 的新实例添加到 Python-Django shell 中的数据库时,问题就开始了:

>>>a = ClubOfficial(name="randomName", email="randomemail@random.com")
>>>a.save()

我收到以下错误:

django.db.utils.ProgrammingError:关系“usermanagement_clubofficial”不存在第 1 行:插入“usermanagement_clubofficial”(“name”,“email”)...

下面是model代码:

class ClubOfficial(models.Model):

    name = models.CharField(max_length=254)
    email = models.EmailField(max_length=254)

如果有帮助,我使用 postgresql,并尝试重新启动服务器。 该程序中的其他应用程序也工作得很好,只是 usermanagem.net 有这个问题。

有谁知道可能出了什么问题?

感谢您的时间!

注意:我现在用不同的名称创建了一个新的应用程序,从用户管理中复制粘贴了一些东西并且一切正常。 我认为问题可能是在我再次创建它之前删除了一个名为 usermanagement 的应用程序。 也许这以某种方式搞砸了数据库。

我遇到了这个。 在我来说,我有一个以前的工作Django应用程序,还没有转移到生产,所以我在我的应用程序的迁移,删除所有文件夹,然后使用Django扩展我擦PostgreSQL数据库,并与缓存的文件:

./manage.py clear_cache
./manage.py clean_pyc
./manage.py reset_schema
./manage.py reset_db
# then deleted all files (including __init__.py) from my app's migrations folder.

我确认我的 postgresql 数据库没有表。 然后我跑了:

./manage.py makemigrations
./manage.py migrate

这给出了输出:

No changes detected
./manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  (about 11 more lines of output here which are similar)

值得注意的是,我的模型名称在迁移中无处可见。 我在我的 postgresql 数据库中打印了这些表,并且 Widget 和 Section 表都丢失了。 运行应用程序给了我这个错误(我用'app'和'model'代替了他们的真实姓名):

ProgrammingError at /my_path
relation "app_model" does not exist
LINE 1: ..."."my_field", "app_model"."my_field" FROM "appname...

所以模型的表没有在数据库中创建。 我的应用程序的迁移文件夹也完全是空的。 解决方案是将一个空的__init__.py添加到我的应用程序的迁移文件夹中,然后运行makemigrations能够在该文件夹中创建并保存迁移文件。 然后可以使用migrate执行此操作。 您可以通过在 migrations/ 文件夹中使用和不使用__init__.py运行makemigrations来自己测试。

这个解决方案不是我的,而是用户Ljubitel在另一篇文章中给出的,但它不是那里接受的答案,但接受的答案对我不起作用,所以我在这里写了这个解决方案,希望能帮助其他人。

我有同样的问题,但我所要做的就是运行

$ python manage.py makemigraions

$ python manage.py migrate

如果您删除了迁移文件夹。 app name您创建的任何app name创建一个名为migration的文件夹,然后在名为__init__.py的迁移文件夹中创建一个文件

在我的例子中,我指向本地服务器和生产服务器之间的不同数据库。 生产服务器指向的数据库落后了几个版本,所以服务器无法找到关系。 如果您的问题仅限于一个环境,请先检查配置。

修复关系的另一种方法不存在错误

  • 使用 sql 查询工具在 db(postgre, mysql) 中创建相同的表
  • 现在在 models.py 和 admin.py 中评论你的 model
  • 使用以下命令运行迁移:
  • python manage.py makemigrations app_name
  • python 管理.py 迁移
  • 现在取消注释并再次运行迁移命令

我遇到了同样的问题并使用以下方法修复,我使用的是 postgres(pgadmin 4)。

我知道关于此问题有很多问题,我仔细研究了解决方案,但不幸的是,没有一个对我有用。

我创建了一个名为“ usermanagement”的新应用,并向该应用添加了一个模型。 添加模型后,我在设置中将用户管理添加到INSTALLED_APPS中。 然后我运行了python manage.py makemigrations和python manage.py migration。 这一切都很好! 我也尝试使用应用名称运行迁移。

当我尝试通过使用以下命令将模型的新实例添加到Python-Django Shell中的数据库时,问题就开始了:

>>>a = ClubOfficial(name="randomName", email="randomemail@random.com")
>>>a.save()

我收到以下错误:

django.db.utils.ProgrammingError:关系“ usermanagement_clubofficial”不存在第1行:插入“ usermanagement_clubofficial”(“名称”,“电子邮件”)...

下面是模型代码:

class ClubOfficial(models.Model):

    name = models.CharField(max_length=254)
    email = models.EmailField(max_length=254)

如果有帮助,我使用postgresql,并尝试重新启动服务器。 该程序中的其他应用程序也可以正常运行,只是usermanagemenet出现了此问题。

有人知道会出什么问题吗?

感谢您的时间!

注意:我现在使用不同的名称创建了一个新应用,从用户管理中复制粘贴了内容,并且一切正常。 我认为问题可能出在删除名为usermanagement的应用之前,还是在我再次创建它之前。 也许这以某种方式弄乱了数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM