Re: Postgres service not starting on windows after install if not installed into standard locations

From: Thomas Schweikle <tschweikle(at)bfs(dot)de>
To: "pgsql-general(at)lists(dot)postgresql(dot)org" <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: Postgres service not starting on windows after install if not installed into standard locations
Date: 2024-11-20 13:26:26
Message-ID: 44c72245-7cb5-47bd-a6b5-e15d0b2a487e@bfs.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Am Mo., 18.Nov..2024 um 19:43:36 schrieb Laurenz Albe:
> On Mon, 2024-11-18 at 17:22 +0000, Thomas Schweikle wrote:
>> Had installed PostgreSQL 16.5 on Windows 10:
>>
>> Install directory: "C:\PRGS\pgSQL\16"
>> DB-Directory: "C:\DB\pgSQL\16\data"
>>
>> Environment variable "PGDATA" is set to "C:\DB\pgSQL\16\data".
>>
>> Initialized the database. Then started postgres services using:
>>
>> c:\PRGS\pgSQL\16\bin\pg_ctl.exe start
>>
>> Worked nice. Server starts, the serves as expected. But: if I try to
>> start the service by "net start pgSQL" I am reported that "pg_ctl.exe"
>> could not find "postgres.exe".
>>
>> What I've tried:
>> - added environment variable "PGPATH" pointing to "C:\PRGS\pgSQL\16\bin"
>> -> did not help.
>>
>> - added "C:\PRGS\pgSQL\16\bin" to path. -> did not help either, even
>> after rebooting. I've added it to system path.
>>
>> Are paths somewhere within some configuration file or registry entry?
>> And set to standard install locations?
>
> How exactly is the Windows service defined?
> Perhaps you need to use an absolute path for the executable.

Servicename: postgresql-x64-16
Name: postgresql-x64-16-PostgreSQL Server 16
Comment: Provides relational database storage
Path: "C:\PRGS\pgSQL\16\bin\pg_ctl.exe"
runservice -N "postgresql-x64-16"
-D "C:\DB\pgSQL\16\data" -w
Type: Automatic
Account: Networkservice
Password: set
Dependencies:RPC, DCOM-Service, RPC-Endpoint

Errors found within system logs:
pg_ctl: could not find program 'postgres.exe'

Seems, since "C:\PRGS\pgSQL\16\bin" is in system path, it does not
search there at all:

# dir "C:\PRGS\pgSQL\16\bin"
[...]
Mi, 13.Nov.2024 13:24 123.392 pg_ctl.exe
[...]
Mi, 13.Nov.2024 13:24 8.659.968 postgres.exe

Any way to tell a service in Windows to use a path?
Any registry key to assign a path to?

# sc qc "postgresql-x64-16"
[SC] QueryServiceConfig ERFOLG

SERVICE_NAME: postgresql-x64-16
TYPE : 10 WIN32_OWN_PROCESS
START_TYPE : 2 AUTO_START
ERROR_CONTROL : 1 NORMAL
BINARY_PATH_NAME : "C:\PRGS\pgSQL\16\bin\pg_ctl.exe"
runservice -N "postgresql-x64-16" -D "C:\DB\pgSQL\16\data" -w
LOAD_ORDER_GROUP :
TAG : 0
DISPLAY_NAME : postgresql-x64-16 - PostgreSQL Server 16
DEPENDENCIES : RPCSS
SERVICE_START_NAME : NT AUTHORITY\NetworkService

--
Thomas

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message felix.quintgz 2024-11-20 14:06:30 Re: Running docker in postgres, SHM size of the docker container in postgres 16
Previous Message Efrain J. Berdecia 2024-11-20 13:21:34 Re: Suddenly all queries moved to seq scan