pg_connect() - pg_last_error => keine Information

Programmierung mit PostgreSQL (C#, PHP, Perl, Java, ...)
Antworten
edv_rs
Neuer Benutzer
Beiträge: 21
Registriert: Do 30. Mär 2006, 11:58

pg_connect() - pg_last_error => keine Information

Beitrag von edv_rs » Di 21. Aug 2018, 15:18

Hallo,
nachdem ich mit der Hilfe hier im Forum ein Problem klären konnte, tut sich nun ein weiteres auf und ich habe bisherige Fundstücke getestet, aber irgendwie habe ich langsam den Verdacht, daß ich auf dem falschen Weg bin.
- PostgreSQL 9.6

Wenn ich mit

Code: Alles auswählen

$conn_string = $conn_nutzer .  " user=NUTZER password=PASSWORD_Nutzer application_name=" . $_SESSION['nutzer'];
$dbconn = @pg_connect($conn_string);
die Verbindung aufbaue, um den Erfolg oder eben Mißerfolg anschließend auszuwerten mit:

Code: Alles auswählen

if ($dbconn)
{
alles ok - Datenzugriffe ausführen
}
else
{
Problem aufgetreten
}
im else dann versuche mit pg_last_error() die für den Entwickler interessante Meldung:

Code: Alles auswählen

Warning: pg_connect(): Unable to connect to PostgreSQL server: FATAL: no pg_hba.conf entry for host "127.0.0.1", user "NUTZER", database "DATENBANK", SSL off in PFAD/DATEI.php on line 205
zu bekommen scheitere ich kläglich.

pg_last_error() habe ich auch schon verwendet bei

Code: Alles auswählen

$dbconn = @pg_connect($conn_string) or die(pg_last_error());
Ich bekomme immer nur eine "leere Antwort" - NICHTS.
Wenn ich die Verbindung ohne das fehlerunterdrückende @ herstelle, kommt die obige Fehlermeldung, aber die möchte ich dem Nutzer nicht zeigen, sondern in meine Log-Datei schreiben. Der Nutzer soll einen Hinweis bekommen und fertig, aber keine Hintergrundinformationen zur Datenbankverbindung. Auch würde den Wenigsten die Information irgendetwas bedeuten, daher eine passende selbst formuliert und mir die wichtigen Informationen ins log geschrieben.

Ich suche gerne noch etwas weiter, bin mir aber momentan unsicher, was ich noch falsch mache - laut Beschreibung soll pg_last_error() genau die Meldung liefern, die ich benötige - oder habe ich das falsch gelesen/gedeutet?

Gruß und Dank
Rainer

akretschmer
Erfahrener Benutzer
Beiträge: 7511
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: pg_connect() - pg_last_error => keine Information

Beitrag von akretschmer » Di 21. Aug 2018, 15:42

das Problem scheint bekannt zu sein, bzw. die Ursache ist wohl, daß pg_last_error() hier nicht arbeiten kann, weil es ja noch keine Verbindung zur DB gibt.
Kannst Du PDO nutzen? Damit sollte es wohl gehen...
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

edv_rs
Neuer Benutzer
Beiträge: 21
Registriert: Do 30. Mär 2006, 11:58

Re: pg_connect() - pg_last_error => keine Information

Beitrag von edv_rs » Di 21. Aug 2018, 15:59

Hallo,
mit PDO habe ich bisher noch nicht gearbeitet - bin aber offen für Änderungen, wenn sie meine Probleme lösen. ;-)

Könnte etwas umfangreichere Änderungen nach sich ziehen, nachdem ich mal kurz auf die Seiten bei php.net geschaut habe. Der Parameter application_name muß verwendetwerden können, in den ersten gefundenen Beispielen ist der nicht aufgetaucht, ansonsten wäre das KEINE Alternative für mich!

Und wieder was am Anfang vergessen...:
- PHP 5.5/5.6 - PHP 7 soll bald aktiviert werden, ist also ab sofort die Basis.

Danke schonmal für den Hinweis, melde mich, wenn ich was brauchbares gefunden oder auch das eine oder andere Problem gefunden habe. ;-)

Gruß Rainer

akretschmer
Erfahrener Benutzer
Beiträge: 7511
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: pg_connect() - pg_last_error => keine Information

Beitrag von akretschmer » Di 21. Aug 2018, 18:12

PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

edv_rs
Neuer Benutzer
Beiträge: 21
Registriert: Do 30. Mär 2006, 11:58

Re: pg_connect() - pg_last_error => keine Information

Beitrag von edv_rs » Mi 22. Aug 2018, 10:35

Hallo,
vielen Dank für Deinen Hinweis. Ich hatte den Eintrag gestern auch schon vor meiner Anfrage gefunden, aber war wohl schon so blind, daß ich die dort stehende Lösung *nicht* erkannt habe. :-((

Habe es eben testen können und kann sagen: DANKE, es funktioniert!

Die Recherchen zu PDO waren gestern, wegen dem zu erwartenden Aufwand der notwendigen Umstellung in meiner Anwendung, eher abschreckend. Da gefällt mir das mit der Exeption schon viel besser. ;-)

Gruß Rainer

Antworten