【发布时间】:2020-10-25 09:02:09
【问题描述】:
我使用 pgAdmin GUI 工具为我的 django 项目创建了一个与 postgres 一起使用的数据库。 pgAdmin 中只有两个数据库,一个是您使用 pgAdmin 开箱即用的默认“postgres”数据库,另一个是我的新数据库 dbfunk。
我正在使用 django 并将 postgres 添加为我的数据库,并在设置中提供了必要的信息。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'dbfunk',
'USER': 'postgres',
'PASSWORD': 'XXXXXX',
'HOST': 'localhost'
}
}
但是当我跑步时
python manage.py makemigrations
它给出了错误,数据库 'dbfunk' 不存在,即使它在 Django 中的 settings.py 中并在 pgAdmin 中添加。错误全文为:
django.db.utils.OperationalError: FATAL: database "dbfunk" does not exist
我已经安装了适配器 psycopg2。我还在 Settings.py 中尝试了'ENGINE': 'django.db.backends.postgresql_psycopg2',,但这没有任何区别。
我还有什么遗漏的吗?
当我运行命令 psql \u 时,它也只显示 postgres 数据库,而不是这个新数据库 'dbfunk'。
我不知道这是否有帮助,但是在安装 postgres 时,我在提示中得到了 5433 作为端口号。
更新:我刚刚从命令行运行createdb dbfunk,这似乎已经创建了它,因为我现在可以运行python manage.py makemigrations。但是,当我已经在 pgAdmin 中完成了这项工作时,为什么还需要这样做呢?也就是说,为什么我必须创建它两次?平时这样吗?
UPDATE2:遗憾的是,我使用 createdb 从命令行创建的数据库 dbfunk 和 pgAdmin 中的 dbfunk 没有同步,迁移不会继续,因此我在 pgAdmin 中看不到 django 模型的表。
我最初使用 Homebrew 和 pgAdmin 分别安装了 Postgres,但后来它没有在 pgAdmin 上提供默认服务器/数据库,所以我删除了 pgAdmin,卸载了 Postgres,然后从网站下载了 Postgres,似乎安装pgAdmin 与它并排,因为当我打开 pgAdmin 时,它具有默认的服务器/数据库 postgres。我在 macOS 上,10.14.6。
当我检查 5432 上的端口时,我得到了这个:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
postgres 16337 me 5u IPv4 0x7560dce8e7fXXXX 0t0 TCP localhost:postgresql (LISTEN)
postgres 16337 me 6u IPv6 0x7560dce8d2XXXXX 0t0 TCP localhost:postgresql (LISTEN)
并且在 5433 上还有更多条目:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
postgres 16809 postgres 4u IPv6 0x7560dce8e883ed93 0t0 TCP *:pyrrho (LISTEN)
postgres 16809 postgres 5u IPv4 0x7560dce8e46dXXXX 0t0 TCP *:pyrrho (LISTEN)
pgAdmin4 17043 me 20u IPv4 0x7560dce8e74cXXXx 0t0 TCP localhost:56820->localhost:pyrrho (ESTABLISHED)
pgAdmin4 17043 me 21u IPv4 0x7560dce8e74cXXXX 0t0 TCP localhost:57054->localhost:pyrrho (ESTABLISHED)
postgres 17051 postgres 12u IPv4 0x7560dce8e74cXXXX 0t0 TCP localhost:pyrrho->localhost:56820 (ESTABLISHED)
postgres 17217 postgres 12u IPv4 0x7560dce8e74cXXXX 0t0 TCP localhost:pyrrho->localhost:57054 (ESTABLISHED)
【问题讨论】:
-
makemigrations 会创建、更改、删除表,而不是创建数据库,除非您使用 sqlite3。
-
是的,当我运行这个命令时,我发现数据库丢失了。
-
你第二次下载的时候是通过哪个链接获取 Postgres 软件的?
标签: django postgresql pgadmin