PostgreSQLにコマンドプロンプトから接続できない原因とは?SQL Shell(psql)との違いも解説

SQL Server

PostgreSQLを久しぶりに使おうとした際に、以前はコマンドプロンプトから接続できていたのに突然接続できなくなり、SQL Shell(psql)を使う必要が出てくることがあります。このような場合、PostgreSQLの仕様変更だけが原因とは限らず、環境変数やインストール状態、接続方法の違いが関係していることがあります。この記事では、PostgreSQLへの接続方法の仕組みや、コマンドプロンプトとSQL Shell(psql)の違い、接続できなくなった場合の確認ポイントを分かりやすく解説します。

PostgreSQLへ接続するにはpsqlというクライアントが必要

PostgreSQLはデータベース本体と、それに接続するためのクライアントツールが分かれています。コマンドプロンプトから入力していたコマンドも、実際にはPostgreSQLへ接続するための「psql」というプログラムを呼び出しています。

例えば、以下のようなコマンドを入力していた場合、これはWindowsのコマンドプロンプト自体がSQLを実行しているわけではありません。

psql -U postgres

Windowsがpsql.exeというファイルの場所を探し、そのプログラムを起動してPostgreSQLサーバーへ接続しています。

そのため、以前は動いていたコマンドが急に使えなくなった場合は、PostgreSQL自体ではなく、psqlの場所をWindowsが見つけられなくなっている可能性があります。

コマンドプロンプトから接続できなくなった主な原因

PostgreSQLを再インストールしたり、バージョンアップしたりすると、以前設定されていた環境が変わることがあります。特に多い原因がPATH環境変数の設定変更です。

PATHとは、Windowsがプログラムの場所を探すための設定です。以前はPostgreSQLのbinフォルダが登録されていたため、どの場所からでもpsqlを実行できていた可能性があります。

しかし、アップデートや再インストール後にPATH設定が消えると、コマンドプロンプトでは以下のようなエラーが表示されることがあります。

  • 「psqlは、内部コマンドまたは外部コマンドとして認識されていません」
  • 「指定されたファイルが見つかりません」

この場合、PostgreSQLが壊れているわけではなく、Windowsがpsql.exeの場所を知らないだけというケースがあります。

SQL Shell(psql)とコマンドプロンプトの違い

SQL Shell(psql)とコマンドプロンプトから起動したpsqlは、基本的には同じ接続先にアクセスするためのツールです。

起動方法 特徴
SQL Shell(psql) PostgreSQLインストール時に用意される専用の起動方法
コマンドプロンプト psqlの場所を指定またはPATH設定して実行する方法

つまり、SQL Shell(psql)を開いたあとに表示される以下のような入力項目は、PostgreSQLへ接続するための設定です。

  • Server(サーバー名)
  • Database(データベース名)
  • Port(ポート番号)
  • Username(ユーザー名)
  • Password(パスワード)

これらを入力して接続できるなら、PostgreSQLのサービス自体は正常に動作している可能性が高いです。

以前と同じようにコマンドプロンプトから接続する方法

以前のようにコマンドプロンプトから接続したい場合は、PostgreSQLのbinフォルダをPATHに追加する方法があります。

一般的には以下のような場所にpsql.exeがあります。

C:\Program Files\PostgreSQL\17\bin

※数字部分はインストールしたPostgreSQLのバージョンによって変わります。

このフォルダをWindowsの環境変数PATHへ追加すると、どの場所からでもpsqlコマンドを実行できるようになります。

例えば、PATH設定後はコマンドプロンプトで以下のように入力できます。

psql -U postgres

するとパスワード入力画面が表示され、以前と同じように接続できます。

接続できない場合に確認するポイント

PostgreSQLへ接続できない場合は、以下の項目を順番に確認すると原因を特定しやすくなります。

  • PostgreSQLのサービスが起動しているか
  • psql.exeの場所が正しいか
  • PATH環境変数にbinフォルダが登録されているか
  • ユーザー名やパスワードが正しいか
  • 接続先のポート番号が変更されていないか

例えば、SQL Shell(psql)では接続できるのにコマンドプロンプトでは失敗する場合、データベース側ではなくWindows側の設定に問題がある可能性が高くなります。

逆にSQL Shell(psql)でも接続できない場合は、PostgreSQLサービスの停止や認証設定など、データベース側の確認が必要になります。

PostgreSQLを久しぶりに使う場合の注意点

1年以上期間が空いてから開発環境を再開すると、OSアップデートやソフトウェア更新によって以前と同じ状態ではなくなっていることがあります。

特にPostgreSQLは複数バージョンを同じパソコンに入れられるため、古い環境と新しい環境が混在しているケースもあります。

例えば、以前はPostgreSQL 14を使っていたが、現在はPostgreSQL 16や17がインストールされている場合、接続先やpsqlの場所が変わっている可能性があります。

まとめ

コマンドプロンプトからPostgreSQLへ接続できなくなった場合でも、必ずしも仕様変更や故障が原因とは限りません。多くの場合はpsql.exeの場所をWindowsが認識できていない、またはPATH設定が変わったことが原因です。

SQL Shell(psql)とコマンドプロンプトから実行するpsqlは基本的に同じ接続ツールなので、SQL Shellで接続できる場合はPostgreSQL自体は正常に動作しています。

以前と同じ操作に戻したい場合はPATH設定を確認し、PostgreSQLのbinフォルダを登録することで、再びコマンドプロンプトから接続できるようになります。

コメント

タイトルとURLをコピーしました