PostgreSQL auf einem Windows Server installieren
Kurzinformationen: Ich hatte die Aufgabe von einem Linux System eine Produktive Datenbank zu sichern und auf einem Windows Server zu implementieren.
Der nackte Server wurde von mir bereits zuvor mit Apache, Java und PHP ausgestattet. Darüber sollte später mithilfe einer WebAPI die DB gesteuert werden.
Ich habe hierzu von PostgreSQL ein Setup-Package heruntergeladen. Dieser wurde durch EnterpriseDB gehostet. In dem Package war unter anderem PGAdmin, eine Gui zur DB Verwaltung inkludiert.
Wozu einen Blogeintrag zu etwas so simplem schreiben, kann man sich nun denken. Ich würde auch zustimmen wenn es dabei nicht einen Fehler gäbe den scheinbar auch andere hatten und mit dem ich nun aushelfen möchte.
Während des Setups wurde mit angezeigt das ein Post-Installations Step fehlgeschlagen sei. Das Datenbankcluster konnte nicht initialisiert werden. Bei der genauen kontrolle gibt es leider keine Datenbank auf dem Localhost als auch kein Service der uns anzeigt das es überhaupt etwas gäbe.
Gut deinstallieren und neuinstallieren war die erste Wahl. Der Verdacht das mehr als nur die Initialisierung fehlgeschlagen sei, wurde bestätigt als ich beim deinstallieren die Fehlermeldung erhielt das der Service nicht gelöscht werden konnte.
Problem running post-install step. Installation may not complete correctly. The database cluster initialisation failed.

Error stopping service postgresql-x64-15

Der Fehler bestand bei der zweiten Installation ebenfalls. Also musste ich herausfinden was genau der Auslöser war bzw. wie ich das Problem behebe.
In den Programmdaten unter „C:\Program Files\Postgresql\15\bin“ befand sich eine Datei die sich initdb.exe nennt. Ich rief mit der Kommandozeile den Ordner auf und startete die exe mit folgenden Parametern:
initdb -D "C:\postgresdb" -U postgres -E UTF8 --lc-collate=en_US.UTF-8 --lc-ctype=en_US.UTF-8Dadurch wurde unter C: ein Ordner namens postgresdb angelegt und dort drin die Datenbank nachträglich initialisiert. Der User postgres ist der Superuser, der bei der Installation angelegt wurde und soll dies auch bei der Datenbank sein. Ebenso habe ich einige weitere Parameter mit angegeben wie z.B. das Encoding auf UTF-8.

Danach musste ich nur noch den Windows Service anlegen. Hierzu benötigt es eine Administrative Kommandozeile in der man folgenden Befehl mit den entsprechenden Parametern ausführt.
pg_ctl register -N PostgresSQL15 -D"C:\postgresdb"- pg_ctl register => Legt einen Windows Service an
- pg_ctl -D „PFAD“ start => Startet einfach nur den Datenbankserver ohne einen Service zu installieren
Ich habe hier einen Windows Service angelegt der automatisch starten soll. Nachdem ich den Service angelegt habe konnte ich mich dann auch in pgadmin mit localhost und dem postgres Benutzer mit der Datenbank verbinden.
Ich wünsche viel Spaß beim Datenbankfüllen.