前回の記事でHomebrew経由でPostgreSQLをmacにインストールしました。
Postgresqlインストール直後にpsql
コマンドで以下のエラーが発生したので対処についてのメモです。
$ psql psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL: database "karlley" does not exist
結論
psql
コマンドを引数なしで実行するとユーザー名と同じ名前のデータベースに接続しようとします。
FATAL: database "karlley" does not exist
と表示された原因はユーザ名と同じデータベースが存在しないのでエラーが発生したようです。
エラーの対処は次の2つです。
psql
コマンドに引数で存在するデータベース名を指定する。- ユーザ名と同名のデータベースを作成する(
psql
コマンドに引数無しでユーザ名と同名のデータベースに接続する)。
ちなみに、引数無しでpsql
コマンドを実行した際のデフォルトのデータベース、ユーザ名等は環境変数を設定することで指定可能です。
例) ユーザ名karlley
でエラーが発生したのでユーザ名と同名のデータベースkarlley
を作成する。
$ psql psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL: database "karlley" does not exist # ユーザ名と同名のデータベースを作成 $ createdb karlley # ユーザ名と同名のデータベースに接続するのでエラーが発生しない $ psql psql (14.4) Type "help" for help. # データベースの作成を確認(一番上が作成したデータベース) karlley=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+---------+----------+---------+-------+--------------------- karlley | karlley | UTF8 | C | C | postgres | karlley | UTF8 | C | C | template0 | karlley | UTF8 | C | C | =c/karlley + | | | | | karlley=CTc/karlley template1 | karlley | UTF8 | C | C | =c/karlley + | | | | | karlley=CTc/karlley testdb | karlley | UTF8 | C | C | (5 rows)
感想
存在しないDBに接続しようとしたという単純なことが原因でしたがデフォルトの仕様をちゃんと理解する大事さを学べて良かったです。 入力している文字列がデータベース名なのかユーザ名なのかちゃんと理解してコマンド入力していないのも問題でした。 次はDBを作成してデータの保存と取得をやってみよう。