按照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
通过Macports安装postgresql93服务器后,将给出以下说明:
上面的方法对我不起作用,而且我看不到defaultdb出现在
/opt/local/bin/psql93 list
但是,
createdb defaultdb
起作用了,我立即看到defaultdb被创建了。在initdb
创建一个集群,它是一个全局数据目录(-D
后面的路径)。此数据目录是一个容器,用于存储数据库集合以及跨数据库共享的信息(如用户表或数据库日志文件)。 每个PostgreSQL安装只有一个集群,但是集群内的数据库数量可以根据需要而定。在createdb
在群集中创建一个数据库,但它不直接操作文件系统,而是在连接到服务器后发出CREATE DATABASE
SQL语句。数据库不是通过路径而是通过名称引用的,这与指定磁盘上路径的全局数据目录相反。在名为
template0
、template1
和通常为postgres
的特殊数据库会自动创建,但您不希望将应用程序数据存储到这些数据库中。在您的误解似乎是认为创建集群同时创建了数据库,或者不知道两者之间的区别。一般情况下,集群是在安装阶段自动设置的,而创建数据库则由用户自己决定。在
相关问题 更多 >
编程相关推荐