Postgresql:“数据库不存在”

2024-10-01 11:19:24 发布

您现在位置:Python中文网/ 问答频道 /正文

按照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访问数据库时,我得到以下错误:

^{pr2}$

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

除了上面的错误消息出现在Python回溯中,它还出现在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

Tags: log数据库dbbinvarlocalnotpostgres
2条回答

通过Macports安装postgresql93服务器后,将给出以下说明:

To create a database instance, after install do
 sudo mkdir -p /opt/local/var/db/postgresql93/defaultdb
 sudo chown postgres:postgres /opt/local/var/db/postgresql93/defaultdb
 sudo su postgres -c '/opt/local/lib/postgresql93/bin/initdb -D
/opt/local/var/db/postgresql93/defaultdb'

上面的方法对我不起作用,而且我看不到defaultdb出现在/opt/local/bin/psql93 list

但是,createdb defaultdb起作用了,我立即看到defaultdb被创建了。在

initdb创建一个集群,它是一个全局数据目录(-D后面的路径)。此数据目录是一个容器,用于存储数据库集合以及跨数据库共享的信息(如用户表或数据库日志文件)。 每个PostgreSQL安装只有一个集群,但是集群内的数据库数量可以根据需要而定。在

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

名为template0template1和通常为postgres的特殊数据库会自动创建,但您不希望将应用程序数据存储到这些数据库中。在

您的误解似乎是认为创建集群同时创建了数据库,或者不知道两者之间的区别。一般情况下,集群是在安装阶段自动设置的,而创建数据库则由用户自己决定。在

相关问题 更多 >