![](/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.