PostgreSQL で「FATAL: database does not exist」で接続できない
接続先の DB が存在しないと出る。
DB 名の綴り違い・未作成に加え、DB 名を省くとユーザー名と同名の DB に繋ぎに行く既定挙動も原因。
createdb で作るか -d で既存 DB を指定する。
公開:
要約
FATAL: database "myapp" does not exist は、接続しようとした名前のデータベースが存在しないときに出る。
psql は DB 名を省略すると「接続ユーザーと同名の DB」へ繋ごうとするため、意図せずこのエラーになることも多い。
まず対象の DB が作られているかを確認する。
よくある原因
- 綴り違い・未作成: 指定した DB 名が実在しない。
- 既定の DB 名:
psql -U aliceはaliceという名前の DB を探しに行く。 - 初期化直後: クラスタは作ったが、目的の DB をまだ作っていない。
解決策
1. データベースを作成する
createdb myapppsql から作るなら次のようにする。
CREATE DATABASE myapp;2. 既存の DB を指定して接続する
psql -U postgres -d postgrespostgres は初期作成される管理用 DB。
まずここへ繋いで様子を見るとよい。
3. データベース一覧を確認する
psql -U postgres -l表示された一覧と綴りを突き合わせ、正しい名前を -d に渡す。