できない.dev

PostgreSQL で「FATAL: database does not exist」で接続できない

接続先の DB が存在しないと出る。
DB 名の綴り違い・未作成に加え、DB 名を省くとユーザー名と同名の DB に繋ぎに行く既定挙動も原因。
createdb で作るか -d で既存 DB を指定する。

公開:

要約

FATAL: database "myapp" does not exist は、接続しようとした名前のデータベースが存在しないときに出る。

psql は DB 名を省略すると「接続ユーザーと同名の DB」へ繋ごうとするため、意図せずこのエラーになることも多い。
まず対象の DB が作られているかを確認する。

よくある原因

  1. 綴り違い・未作成: 指定した DB 名が実在しない。
  2. 既定の DB 名: psql -U alicealice という名前の DB を探しに行く。
  3. 初期化直後: クラスタは作ったが、目的の DB をまだ作っていない。

解決策

1. データベースを作成する

createdb myapp

psql から作るなら次のようにする。

CREATE DATABASE myapp;

2. 既存の DB を指定して接続する

psql -U postgres -d postgres

postgres は初期作成される管理用 DB。
まずここへ繋いで様子を見るとよい。

3. データベース一覧を確認する

psql -U postgres -l

表示された一覧と綴りを突き合わせ、正しい名前を -d に渡す。

この記事は役立ちましたか?