Re: Postgres service not starting on windows after install if not installed into standard locations - Mailing list pgsql-general

From Thomas Schweikle
Subject Re: Postgres service not starting on windows after install if not installed into standard locations
Date
Msg-id 44c72245-7cb5-47bd-a6b5-e15d0b2a487e@bfs.de
Whole thread Raw
In response to Re: Postgres service not starting on windows after install if not installed into standard locations  (Laurenz Albe <laurenz.albe@cybertec.at>)
Responses Re: Postgres service not starting on windows after install if not installed into standard locations
List 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

pgsql-general by date:

Previous
From: "Efrain J. Berdecia"
Date:
Subject: Re: Suddenly all queries moved to seq scan
Next
From: felix.quintgz@yahoo.com
Date:
Subject: Re: Running docker in postgres, SHM size of the docker container in postgres 16