我使用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。我也在'ENGINE': 'django.db.backends.postgresql_psycopg2',
Settings.py中尝试过,但这没有任何区别。
还有其他我想念的东西吗?
当我运行命令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)
对于初学者,您没有PORT
在中指定DATABASES
。postgres的默认端口为5432,因此,如果包含dbfunk的数据库集群正在监听端口5433,则Django将找不到该端口。我的猜测是您有两个postgres实例在运行,一个实例在端口5432上,另一个在5433上。当您这样做时,createdb dbfunk
我猜您又没有指定端口,并且数据库在集群中创建,监听5432。现在python manage.py makemigrations
可以找到使用中的设置DATABASES
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句