无法将 postgresql 与 django 连接

Posted

技术标签:

【中文标题】无法将 postgresql 与 django 连接【英文标题】:Not able to connect postgresql with django 【发布时间】:2015-02-28 18:54:49 【问题描述】:

我在postgresql 中创建了一个名为testdb1 的数据库,我正在尝试将它与我的django 应用程序连接起来。但是当我运行python manage.py syncdb 时,我得到了错误django.db.utils.OperationalError: FATAL: database "testdb1" does not exist。该数据库确实存在,如下所示:

archit@archit-Inspiron-5520:~/Documents/DjangoLabs/gswd$ psql -U postgres
Password for user postgres: 
psql (9.1.14)
Type "help" for help.

postgres=# \connect testdb1
You are now connected to database "testdb1" as user "postgres".
testdb1=# \d
          List of relations
 Schema |  Name   | Type  |  Owner   
--------+---------+-------+----------
 public | company | table | postgres
(1 row)

settings.py 我有:

DATABASES = 
    'default': 
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'testdb1',                      
        'USER': 'postgres',
        'PASSWORD': 'admin',
        'HOST': 'localhost',
        'PORT': '',
    

/etc/postgresql/9.1/main/pg_hba.conf:

# Database administrative login by Unix domain socket
local   all             postgres                                md5

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            md5
#host    replication     postgres        ::1/128                 md5
local   all         postgres                          md5

编辑:

\du 命令给出:

testdb1=# \du
                             List of roles
 Role name |                   Attributes                   | Member of 
-----------+------------------------------------------------+-----------
 archit    | Superuser, Create role, Create DB, Replication | 
 postgres  | Superuser, Create role, Create DB, Replication | 

任何帮助将不胜感激。

【问题讨论】:

我在部署其中一个项目时遇到了同样的错误。我不记得了,但解决方案很简单。例如。尝试在你的 settings.py 或其他类似的东西中添加 PORT。 我遇到了类似的问题,但我的问题是我会在本地机器上的 pgAdmin 中创建数据库,但在服务器的命令行中它会自动将所有内容都小写。在我的设置文件中,它是大写的,所以 Django 无法识别数据库。这里似乎不是问题,但其他人可能会遇到它。 【参考方案1】:

删除数据库并重新创建数据库。

在 settings.py 中写入 'PORT'='5432' 或 '5433' 因为这是所有 postgresql 中的通用端口。

然后进行同步数据库或迁移。

【讨论】:

你安装 psycopg2 了吗? 是的,我已经安装了。【参考方案2】:

因为您的表是在没有 Django 工具的情况下创建的。你需要写下一个 Model 类并设置一些关于你的表的“自定义”名称格式的 Metal 信息:https://docs.djangoproject.com/en/1.7/ref/models/options/#table-names

如果可以,我建议您删除此表并使用 Django ORM 来构建您的数据库。比用 SQL 写一切都更快更简单:https://docs.djangoproject.com/en/1.7/intro/tutorial01/#creating-models

【讨论】:

即使在删除表后它也会给出相同的错误。 您将 port 设置为 blank string 尝试放置默认端口或将其从字典中删除。并按照教程!您必须使用 syncdb 或 migrate 构建数据库(取决于 django 的版本) @ArchitVerma 你必须在删除后recreate db 然后执行syncdb。 @rajasimon 他根本不需要放弃。他可以使用他们的 db/tables 从 ORM 构建。 @rajasimon 我同意。但是已经存在的桌子应该没有问题。

以上是关于无法将 postgresql 与 django 连接的主要内容,如果未能解决你的问题,请参考以下文章

将 Django 连接到 PostgreSQL 数据库 (GeoDjango)

设置 PostgreSQL,无法连接到数据库 postgres

将 Django 与 Docker 一起使用时出错 - “无法连接到 '127.0.0.1' (111) 上的 MySQL 服务器”)

无法使用 Postgresql 将 JDBC 连接到 sonarqube

Heroku部署后Django(djongo)无法连接到MondoDB Atlas

无法使用 docker 将 PostgreSQL 数据库连接到 Spring