psql: error: FATAL: database does not exist の解決方法
1分で読める
テック
最終更新:
PostgreSQLの環境構築後に、ユーザーは存在しているのに接続できないエラーが出た記録です。
エラーの内容
docker compose exec db bash
root@1e04746ce311:/# psql -U username
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: database "username" does not exist
ユーザー(ロール)は作成済みなのに、接続できない状態でした。
原因
psqlのオプションのデフォルト動作が原因です。
psql -h ホスト名 -p ポート番号 -U ロール名 -d データベース名
-d(データベース名)を省略した場合、ロール名と同じ名前のデータベースに接続しようとする
今回は -U username だけ指定したので、username という名前のデータベースを探しに行き、存在しないためエラーになっていました。
実際に作成していたデータベース名は app でした。
解決法
-d オプションでデータベース名を明示的に指定します。
psql -U username -d app
psql (16.x)
Type "help" for help.
app=#
まとめ
psql: FATAL: database "username" does not exist というエラーが出たら、-d オプションでデータベース名を指定しているか確認してください。ロール名とデータベース名が一致している場合はエラーが出ませんが、別の名前のデータベースに接続する場合は明示が必要です。
記事の更新をメールで受け取る
質問・リクエストを送る
記事についての質問や、取り上げてほしいテーマがあればお気軽にどうぞ。いただいた質問はブログ記事として回答し、Q&Aページで公開することがあります。