2

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 トレースバックに表示される上記のエラー メッセージとは別に、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
4

2 に答える 2

7

initdbグローバル データ ディレクトリ ( の後のパス) であるクラスタを作成します-D。このデータ ディレクトリは、データベースのコレクションと、データベース間で共有される情報 (ユーザー テーブルやデータベース ジャーナル ファイルなど) のコンテナーです。PostgreSQL のインストールごとに 1 つのクラスターしかありませんが、そのクラスター内に必要な数のデータベースがあります。

createdbクラスタ内にデータベースを作成しますが、ファイル システムを直接操作するのではなくCREATE DATABASE、サーバーに接続した後に SQL ステートメントを発行します。ディスク上のパスを指定するグローバル データ ディレクトリとは対照的に、データベースはパスではなく名前で参照されます。

template0、およびという名前の特別なデータベースは、template1多くの場合postgres、新しいクラスターで自動的に作成されますが、アプリケーション データをそれらに保存したくありません。

あなたの誤解は、クラスターを作成するとデータベースが同時に作成されると信じていたか、両方の違いを知らなかったようです。通常、クラスターはインストール段階で自動的にセットアップされますが、データベースの作成はユーザーに任されています。

于 2013-08-13T00:49:54.243 に答える
-1

Macports 経由で postgresql93-server をインストールした後、次の手順が表示されます。

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 が作成されていることがすぐにわかります。

于 2013-08-13T00:18:05.740 に答える