首页 > 解决方案 > Django PostgreSQL 现有数据库不存在

问题描述

我在 PostgreSQL 中有一个肯定存在的tablename带有模式的表sub——它已经创建,它已经添加了数据,当我SELECT * FROM sub.tablename在 pgAdmin 4 中运行时,它返回结果没有问题。

当我尝试在我的 Django 应用程序中访问同一个表时,它会产生错误psycopg2.OperationalError: FATAL: database "main.sub.tablename" does not exist。我尝试创建表名sub.tablenametablename但它仍然声称该表不存在。我是它的所有者,sub它是我用于访问该表的凭据。我已经确认主机名和端口是应该的。

我不知道如何解决此问题,因为据我所知,此错误仅在人们尚未实际创建表格或拼写错误时才会出现。

ETA:连接到 PostgreSQL 而不仅仅是使用标准 sqlite 的重点是在生产中我将有一个 PostgreSQL 表,其中包含用户名和密码(如tablename)用于登录应用程序。不确定这是否会有所不同。

settings.py下面是我在表/数据库信息出现的地方的相关代码简介。

设置.py

DATABASES = {
    'default': {
        'NAME': 'tablename',
        'ENGINE': 'django.db.backends.postgresql',
        'USER': 'username',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '1234',
    }
}

追溯

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/django/db/backends/base/base.py", line 216, in ensure_connection
    self.connect()
  File "/usr/local/lib/python3.7/site-packages/django/db/backends/base/base.py", line 194, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/usr/local/lib/python3.7/site-packages/django/db/backends/postgresql/base.py", line 178, in get_new_connection
    connection = Database.connect(**conn_params)
  File "/usr/local/lib/python3.7/site-packages/psycopg2/__init__.py", line 126, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: FATAL:  database "opr.opr_user_test" does not exist

标签: djangopostgresqlpsycopg2

解决方案


删除除init .py 文件之外的所有迁移文件,然后再次运行 makemigrations,如果 migrate 给出任何错误使用 -

python manage.py migrate --fake

这将伪造迁移过程,你会很高兴。


推荐阅读