Windows で PostgreSQL サーバーを起動する
今日は、Windows で PostgreSQL サーバーを起動する方法を学習します。 Windows での PostgreSQL のダウンロードとインストールに関する以前の記事では、セッションの開始方法、USER
の作成方法、クエリの発行方法、およびさまざまなデータベース オブジェクトの操作方法について既に学習しました。
ここでのトピックは、ローカル システム内の他のユーザーが接続できる PostgreSQL サーバー セッションを実行しようとすることに焦点を当てています。
Windows での基本的な PG_CTL
初期化コマンド
PG_CTL
は、PostgreSQL サーバーの起動と制御に使用されるユーティリティです。 PG_CTL
は、制御された終了を提供し、さまざまなタスクをカプセル化し、データベースに関連するさまざまな操作に使用できるため、PostgreSQL セッションを初期化するための手動セットアップです。
Windows でサーバーを起動するには、PostgreSQL インストール内のコマンド プロンプトで、BIN
フォルダーに移動します。
pg_ctl start -D "[\data folder directory]";
これにより、PostgreSQL サーバーが起動します。 他のユーザーがリッスンするコンピューターの別のポートでこれを行うには、次のようにクエリを使用します。
pg_ctl -o "-F -p [post_number]" start
括弧なしで定義された port_number
に PORT NUMBER
を入力します。 これにより、サーバーを起動し、他のユーザーが別のシステムでサーバーに接続できるようになります。
ただし、PostgreSQL サーバーが何らかの理由またはわずかな誤動作で停止した場合は、次のコマンドのいずれかを使用して動作させることをお勧めします。
pg_ctl restart -D "[\data folder];
pg_ctl start company; --may or may not work / may produce errors
...
多くの場合、これを行う必要はありません。 たとえば、PGADMIN
を起動すると、PC
の定義済みポートに PostgreSQL セッションがすでに作成されている傾向があり、他のユーザーが簡単にそれを発見できるようになっています。
PostgreSQL サーバーを起動するために上記のコマンドを記述する必要はない場合があります。
Windows で PG_CTL START/RESTART
を発行する際にパスを指定する
単純な PG_CTL START/RESTART
を呼び出すのが適切でない場合があります。 PostgreSQL インストール内の DATA
フォルダー パスを指定してから、ブート コマンドを発行する必要がある場合があります。
上記のクエリを呼び出すと、OUTPUT
が得られます。
出力:
pg_ctl: another server might be running; trying to start server anyway
waiting for server to start....2022-04-28 19:28:38.766 PKT [3228] LOG: redirecting log output to logging collector process
2022-04-28 19:28:38.766 PKT [3228] HINT: Future log output will appear in directory "log".
stopped waiting
pg_ctl: could not start server
Examine the log output.
上記の出力は、PostgreSQL サーバーが既に実行されている場合に発生します。 既に PGADMIN
を起動してバックグラウンドで実行しているため、上記のクエリを呼び出しても、既に使用されているポートでサーバーを初期化することはできません。
ただし、以下のことを行うと、同じ PC 上で別のサーバーが実行されます。
pg_ctl -o "-F -p 5656" start -D "C:\Program Files\PostgreSQL\14\data"
出力:
waiting for server to start....2022-04-28 19:34:04.588 PKT [11784] LOG: redirecting log output to logging collector process
2022-04-28 19:34:04.588 PKT [11784] HINT: Future log output will appear in directory "log".
done
server started
同様に、RESTART
に対しても同じコマンドを発行できます。
pg_ctl restart -D "C:\Program Files\PostgreSQL\14\data"
or
pg_ctl -o "-F -p 5656" restart -D "C:\Program Files\PostgreSQL\14\data"
出力:
waiting for server to shut down.... done
server stopped
waiting for server to start....2022-04-28 19:35:46.007 PKT [884] LOG: redirecting log output to logging collector process
2022-04-28 19:35:46.007 PKT [884] HINT: Future log output will appear in directory "log".
done
server started
出力では、サーバーが既に実行されているために最初にシャットダウンされ、次に再起動され、セッション中の変更がログに記録される様子を確認できます。
SERVICES.MSC
を使用して Windows で PostgreSQL セッションを START/STOP
する
PSQL
または PGADMIN
から起動すると、PostgreSQL サーバーが PC
上でインスタンス化されることは既にわかっています。 SERVICES.MSC
でいくつかのことを実行できます STOPPED
または PAUSED
サービスについては、Windows サービス マネージャー。
-
Windows+R を押し、
SERVICES.MSC
と入力します。 -
Windows サービス マネージャーが開いたら、リストで PostgreSQL サーバー サービスを検索します。
postgresql-x64-14 - PostgreSQL Server 14
のように名前が付けられる場合があります。 -
これを右クリックして、サーバーを
START
、STOP
、PAUSE
、RESUME
、またはRESTART
します。 次回から自動的に起動するように、起動時間をAUTOMATIC
に変更することもできます。
Services Manager は、特定のサービスの失敗の原因も教えてくれる傾向があります。 実行可能パスを表示するには、一般
タブを開いて次のように表示します。
COMMAND PROMPT
から NET START
を使用して PostgreSQL サーバーを起動する
NET START
コマンドを使用して、コマンド プロンプトからサービスを開始できます。 構文は次のとおりです。
NET START [service_name]
PostgreSQL セッションの SERVICE_NAME
を見つける必要がある場合があります。 一般
タブにも記載されています。
これで、次のようにコマンドを発行できます。
net start postgresql-x64-14;
これにより、サーバーが起動し、次のように出力が表示されます。
出力:
The postgresql-x64-14 - PostgreSQL Server 14 service is starting.
The postgresql-x64-14 - PostgreSQL Server 14 service was started successfully.
ただし、COMMAND PROMPT
は、通常のユーザーではなく ADMINISTRATOR
として開始する必要があることに注意してください。
CMD.EXE
実行可能ファイルを右クリックし、管理者として実行
をクリックします。 そうしないと、次のようなエラーが発生します。
出力:
System error 5 has occurred.
Access is denied.
そこで今日は、さまざまな方法で Windows で PostgreSQL サーバーを起動する方法を学びました。 この記事をよくお読みいただき、必要に応じてご利用いただければ幸いです。
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub