gpt4 book ai didi

python - PostgreSQL: "database does not exist"

转载 作者:行者123 更新时间:2023-11-28 21:22:50 26 4
gpt4 key购买 nike

按照适用于 Mac 的 postgresql 安装说明,我最近创建了一个数据库并启动了服务器。一切看起来都运行良好。

/opt/local/lib/postgresql93/bin/postgres -D /opt/local/var/db/postgresql93/defaultdb
LOG: database system was shut down at 2013-08-12 15:36:09 PDT
LOG: database system is ready to accept connections
LOG: autovacuum launcher started

但是,当我尝试从 Python3 Django 访问数据库时,出现以下错误:

OperationalError: FATAL:  database "/opt/local/var/db/postgresql93/defaultdb" does not exist

如果我进入那个目录 defaultdb,我会看到它存在并且里面有很多文件。

除了上述错误信息出现在 Python traceback 中,它还出现在 postgres 日志中:

FATAL:  database "defaultdb" does not exist
FATAL: database "/opt/local/var/db/postgresql93/defaultdb" does not exist

我也试过只用名称“defaultdb”替换完整路径,但得到了相同的消息。

编辑:事实上,运行以下命令也不起作用:

/opt/local/bin/psql93 defaultdb
psql93: FATAL: database "defaultdb" does not exist

最佳答案

initdb 创建一个cluster,它是一个全局数据目录(-D 之后的路径)。此数据目录是一个容器,用于存放数据库集合以及跨数据库共享的信息(如用户表或数据库日志文件)。每个 PostgreSQL 安装只有一个集群,但在该集群中可以有任意数量的数据库。

createdb 在集群内创建一个数据库,但它并不直接操作文件系统,而是在连接到服务器后发出一个 CREATE DATABASE SQL 语句。数据库不是通过路径而是通过名称来引用的,这与在磁盘上指定路径的全局数据目录相反。

名为 template0template1 和通常为 postgres 的特殊数据库是使用新集群自动创建的,但您不想存储您的应用程序数据到他们。

看来你的误解是认为创建集群同时创建了数据库或者不知道两者的区别。通常,集群会在安装阶段自动设置,而创建数据库则留给用户。

关于python - PostgreSQL: "database does not exist",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18197941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com