![](/img/trans.png)
[英]Django “relation does not exist” error with custom user class and Postgresql schemas
[英]Relation does not exist error in Django after postgresql integration
我在开发过程中使用了 sqlite3,然后将我的数据库设置更改为 postgresql:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'test2',
'USER': 'postgres',
'PASSWORD': 'aman',
'HOST': 'localhost',
'PORT': '5432',
}
}
无论我写什么命令,它都会给我错误:
django.db.utils.ProgrammingError: relation "taksist_category" does not exist
LINE 1: ...st_category"."id", "taksist_category"."name" FROM "taksist_c...
类别模型存在于 taksist 应用程序中。 如果我将数据库设置恢复到 sqlite3,则应用程序将成功运行。
我什至无法运行我的服务器。 即使我的模型 taksist/Category 有问题,我的应用程序也应该运行。 奇怪的是,无论写什么命令,我都收到了这个错误。 我不能做 makemigrations、迁移、运行服务器。
我做了什么来解决这个问题:
以上都没有奏效。
这是 taksist.category 模型,以防万一。
class Category(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length = 20)
def __str__(self):
return self.name
感谢您的任何帮助。 先感谢您。
“关系不存在”的根本原因是尚未运行迁移。
但是,通过评论:
无论我执行什么命令,我都会收到此错误。 甚至 runserver、makemigrations 和 migrate。 将数据库设置更改为 postgresql 后,我无法迁移。 我无能为力。
这可能意味着您编写的应用程序在初始化时访问数据库的方式,例如类似
from my_app.models import Blog
default_blog = Blog.objects.get(pk=1)
def view(...):
这意味着 Django 将在导入该模块后立即尝试访问数据库。 如果在 Django 尝试为migrate
初始化自身时导入了该模块,则会出现异常。
您可以查看django.db.utils.ProgrammingError
的回溯以找出违规访问是什么并修复它。 例如,使用get_default_blog()
函数可以更好地为上述模式提供服务。
如果我将数据库设置恢复到 sqlite3,则应用程序将成功运行。
这个错误还意味着,如果您重命名或删除当前正在运行的 SQLite 数据库,您也无法获得新的数据库,因为尝试migrate
它会失败并出现类似的错误。 这不仅仅是 Postgres 的“错误”。
如果是测试数据库执行py manage.py flush
命令,然后再次运行py manage.py makemigrations
,然后运行py manage.py migrate
命令。
那应该可以解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.