Eine einfache Rolle für ein einfaches Programm, zur installations Kontrolle

Liebe Community,
Ich möchte noch einmal danken für die Hilfe libpq4 auf meinem System zu installieren.

Jetzt möchte ich gerne ein erstes Script ausführen um zu sehen ob auch wirklich alles funktioniert.
Dazu muss ich eine Rolle erstellen die kein Passwort benötigt - jeden falls bei folgendem Code.:

 #include <iostream>
 #include <pqxx/pqxx>

 int main()
 {
   try
   {
     pqxx::connection c;
     pqxx::work w(c);
     pqxx::result r = w.exec("SELECT 1");
     w.commit();

     std::cout << r[0][0].as<int>() << std::endl;
   }
   catch (const std::exception &e)
   {
     std::cerr << e.what() << std::endl;
     return 1;
   }
 }

Dieser Code ist der Erste Code aus der Documentation von libpq4++ selber.

Oder gibt es einen anderen Weg.
Bin noch sehr unerfahren in PostgreSQL, so kann es sein dass die Lösung ganz einfach ist.

Ein etwas auf dem Schlauch stehender
Mungo1981

Ok,
Ich hab versucht eine Rolle trust in pg_hbaf.conf anzulegen.
Und dann mit \du nach gesehen ob meine Rolle existiert.
Meine neue Rolle scheint aber noch nicht zu existieren.
Gibt es da vielleicht ein Kommando mit dem die Rollen neu eingelesen werden.

Eine Rolle wird mit CREATE ROLE angelegt, nicht durch editieren von pg_hba.conf

Richtig !!!

Und dieses Programm läuft defnitierlich - meiner Meinung nach - nicht.
Hab ne Rolle mit Password angelegt.
Und dem Konstruktor der Connection mehrere Angaben hinzugefügt.:

#include <iostream>
#include <pqxx/pqxx>

 int main()
 {
   try
   {
     pqxx::connection c(
	    "user=papa "
            "host=localhost "
            "password=mama "
            "dbname=mydb");
     pqxx::work w(c);
     pqxx::result r = w.exec("SELECT 123");
     w.commit();

     std::cout << r[0][0].as<int>() << std::endl;
   }
   catch (const std::exception &e)
   {
     std::cerr << e.what() << std::endl;
     return 1;
   }
 }

Und dann läuft das Programm ohne Probleme.
Nur warum steht es dann anders in den Doc-Dateien ???
:confused: :angry: :confused:

unklar, was Du da machst, willst, oder versuchst.

Ohne den Originalcode zu sehen ist das kaum zu beantworten.

Aber:
Clientverbindungen zu Postgres können je nach Plattform und je nach Definition in der pg_hba.conf mit unterschiedlich wenig Verbindungsparametern auskommen, sodass bspw. kein Passwort notwendig ist.

Grundsätzlich würde ich Dir empfehlen, zunächst mit fertigen Programmen etwas zu spielen. Du kannst im Zweifel mit einem Command Line Tool beginnen oder natürlich irgendein DB IDE nehmen. Auch dort musst Du eine Connection aufbauen, auch dort kannst Du nach Herzenslust mit Postgres Erfahrung sammeln. Wenn die ersten Hürden überwunden sind, kannst Du das Programmieren dazunehmen.

Wenn Du ein Programm erstellst, ist es in vielen Fällen hilfreich, den SQL Coder “zu Fuß” außerhalb des Programms zu testen.
Warum liefert ein Statement nicht das gewünschte Ergebnis?
Bei welcher Variante kommt ein Fehler?
Habe ich das Initialisierungsscript versehentlich doppelt laufen lassen?

Solche Dinge programmierst Du nicht, die fragst Du eben kurz mit einem SQL Tool ab.

Was hast Du denn eigentlich vor?
Um mit SQL rumzuspielen und zu lernen PG zu administrieren reicht ein Linux /Unix Terminal und
psql vollkommen aus. C++ macht eigentlich nur Sinn wenn Du ein konkretes Tool wie z.B eine DB GUI App oder einen Deamon bauen willst der irgend etwas im Hintergrund machen soll (z.B ein permanent Datenimporter oder sowas).