Erste Versuche

Hier dreht es sich um den PostGre Server

Moderator: Moderatoren

Antworten
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Erste Versuche

Beitrag von Wolfgang Ciriack »

Hallo,
habe den Postgres Server 13.5 x64 installiert und die Änderungen bezüglich der Authentifizierung aus dem Artikel von Alaska https://ilx.alaska-software.com/index.p ... h-xbase.6/ durchgeführt.
Wenn ich jetzt das Beispiel sql\xbpbrowse ausführe, bekomme ich folgende Fehlermeldung:
2022-01-09 19_02_12-SqlBrowse.png
2022-01-09 19_02_12-SqlBrowse.png (9.01 KiB) 6073 mal betrachtet
Der Rollenname ist sehr krytisch.
Habe ich da irgendetwas vergessen zu installieren oder eine Einstellung nicht vorgenommen ?
Oder funktioniert das mit der Version 13.5 noch nicht, muss ich was älteres installieren ?
Viele Grüße
Wolfgang
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Erste Versuche

Beitrag von Martin Altmann »

Habe es mal an die richtige Stelle verschoben.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Erste Versuche

Beitrag von Werner_Bayern »

Servus Wolfgang,

zuerst: pqlib client dll wurde mit der Version 1425 auf die 13.2 aktualisiert, Du brauchst also den Artikel grundsätzlich nicht berücksichtigen.

Die Fehlermeldung betriff ja die Stelle:

Code: Alles auswählen

  IF(!oInfo:isDatabase(cDB))
    oStmt := DacSQLStatement():FromChar([CREATE DATABASE "::dbname" WITH OWNER = "::owner" ENCODING = 'UTF8'])
    oStmt:DbName := cDB
    oStmt:Owner  := _GetValueFromConnectionTuple(cConnStr,"UID")
    oStmt:Build():Execute()
  ENDIF
Es soll also eine neue DB angelegt werden. Hat Dein übergebener Benutzer auch das Recht dazu?
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Erste Versuche

Beitrag von Marcus Herz »

Native Fehlermeldungen von PostgreSQL sind grundsätzlich UFT8
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Erste Versuche

Beitrag von Wolfgang Ciriack »

Ja, habe mit PgAdmin 4 und dem SQL-Script northwind.postgresql.sql die Tabellen anlegen können.
Viele Grüße
Wolfgang
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Erste Versuche

Beitrag von Werner_Bayern »

Servus Wolfgang,

nicht Tabellen, sondern DB = Datenbank.
Mit PGAdmin könntest ja mit einem anderen Benutzer angemeldet gewesen sein, als hier per Xbase++. Also, welche DB hast angegeben, gibt es die schon und hat der Benutzer lt. Connection-String im XbpBrowse-Beispiel die nötigen Rechte?
es grüßt

Werner

<when the music is over, turn off the lights!>
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Erste Versuche

Beitrag von georg »

Hallo, Wolfgang -


meines Wissens hat PostGRE auch eine Konsole. (Ich mache das analog so mit MySQL.)

Wenn etwas nicht funktioniert, melde ich mich an der Konsole an (mit dem entsprechenden Benutzer und Passwort) und führe den Befehl in der Konsole aus. Dann sehe ich, ob es funktioniert oder nicht, und bekomme auch eine etwas aussagekräftigere Fehlermeldung. Es kann sogar sein, dass der Benutzer, den Du im Programm verwendest, nicht die erforderlichen Rechte hat (dann scheitert auch alles weitere).

Mit der Nutzung der Konsole kann man das aber sehr gut eingrenzen.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Erste Versuche

Beitrag von Tom »

Die Konsole zu PostGreS heißt PSQL. Es befindet sich im ..\bin-Verzeichnis der Installation. pgAdmin ist aber viel bequemer.
Herzlich,
Tom
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Erste Versuche

Beitrag von georg »

Hallo, Tom -


Du hast recht, pgAdmin ist bequemer. Aber der läuft unter einem Benutzerprofil in einem Umfeld, wo es (immer) passt.

Wenn der Anwender nicht mit "root" oder sonst einem privilegiertem Profil zugreift (wie über ein Xbase++ Programm), sind die Karten anders gemischt. Daher die Empfehlung, die einzelnen Schritte mit psql durchzugehen.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Erste Versuche

Beitrag von Tom »

pgAdmin kann mehrere Server verwalten, auch unterschiedliche Versionen. Ist schon ziemlich handy.

@Wolfgang: Du machst zunächst einen Connect zum Server, dann zur Datenbank, aber wenn Du nicht administrieren willst, gleich zur Datenbank. Ein Server kann beliebig viele Datenbanken haben. In der Datenbank gibt es dann ein Schema oder mehrere davon (wobei hier der Plural "Schemas" richtig wäre, nicht "Schemata"). Die PGDBE unterstützt standardmäßig (und beim Upsizing) nur "public", das ist sozusagen das Standardschema, wie ein Root-Verzeichnis in einer Ordnerstruktur - darin landen beim Upsizing auch alle Tabellen. Dort gibt es dann irgendwo "Tables", das sind die Tabellen dann auch. Also Server -> Datenbank -> Schema -> Tables. Man könnte parallele Schemas in einer Datenbank wie Unterordner in einem Datenbankpfad verwenden, wo man dann mit SET PATH/SET DEFAULT die Hierarchie regelt, wofür es Kommandos in PostGreS gibt, aber das unterstützt die PGDBE leider auch nicht. Ein <SELECT * FROM pg_tables> listet Dir alle Tabellen.
Herzlich,
Tom
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Erste Versuche

Beitrag von Wolfgang Ciriack »

Hallo Tom,
habe jetzt erst mal anderes zu tun, komme aber vielleicht am nächsten Wocheende darauf zurück.
Ich dachte, ich könne das sqlbrowser-Beispiel von Alaska nach installierten Server einfach mal so ausführen.

@Werner,
pqlib client dll wurde mit der Version 1425 auf die 13.2 aktualisiert, Du brauchst also den Artikel grundsätzlich nicht berücksichtigen.
Das heißt, ich brauche die Verschlüsselung nicht von scram-sha-256 auf md5 zu ändern, XBase kann damit umgehen ?
Viele Grüße
Wolfgang
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Erste Versuche

Beitrag von Tom »

Für einen 13er-Server muss man die Verschlüsselung nicht mehr umstellen, nein. Und das SQLBrowse-Beispiel ist ja kein PGDBE/ISAM-Ding, wenn ich das richtig in Erinnerung habe. Beispiele und Dokumentation zu dieser ganzen PG-Sache sind leider immer noch etwas dürftig.
Herzlich,
Tom
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Erste Versuche

Beitrag von Werner_Bayern »

Tom hat geschrieben: Di, 11. Jan 2022 8:53 Und das SQLBrowse-Beispiel ist ja kein PGDBE/ISAM-Ding, wenn ich das richtig in Erinnerung habe.
Zwitter: Zum Editieren eines Satzes wird die ISAM-Maschinerie angeschmissen.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Erste Versuche

Beitrag von Wolfgang Ciriack »

Gibt es denn gar kein lauffähiges Beispiel für die Anbindung an Postgres für einen ersten Test?
Ich dachte, das sqlbrowse Beispiel wäre gut, da dort ja eine Tabelle aus einer bestehenden DBF angelegt werden soll, wenn diese noch nicht existiert.
Das endet jedoch immer - habe jetzt nochmal die 12.9 statt 13 installiert - mit derselben Fehlermeldung

Code: Alles auswählen

oError:args         :
          -> VALTYPE: U VALUE: NIL
oError:canDefault   : J
oError:canRetry     : N
oError:canSubstitute: J
oError:cargo        : {NIL,         -1, FEHLER:  Rolle »$2« existiert nicht}
oError:description  : FEHLER:  Rolle »$2« existiert nicht
oError:filename     : 
oError:genCode      :       9001
oError:operation    : ABSTRACTSQLSTATEMENTBUILDER:EXECUTESTATEMENT
oError:osCode       :          0
oError:severity     :          2
oError:subCode      :         -1
oError:subSystem    : Remote SQL dacSession
oError:thread       :          1
oError:tries        :          0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Called from CHECKDATAEXISTS(117)
Weiß jetzt nicht, wo ich die Rolle im pgAdmin4 definieren sollte.
Na vielleicht muss ich mal eine Mail an Alaska schicken.
Viele Grüße
Wolfgang
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Erste Versuche

Beitrag von Werner_Bayern »

Servus Wolfgang,

selber Fehler wie bei Deiner Eingangsmeldung. Du hast schon in der main.prg Deinen Connection-String angepasst???

Zeile 43ff.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Erste Versuche

Beitrag von Wolfgang Ciriack »

Hallo Werner,
nein, habe ich so gelassen, da Benutzer und Kennwort so angelegt sind.
Verbindung wird ja auch aufgebaut.
Viele Grüße
Wolfgang
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Erste Versuche

Beitrag von Werner_Bayern »

Dann müsste Deine Rolle aber pgdbe sein!

Geh doch mal mit dem Debugger CheckDataExists() durch und schau Dir die z. B. cDB genau an.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Erste Versuche

Beitrag von Wolfgang Ciriack »

Hallo Werner,

cDB ist "xppsamples"
Owner ist postgres
Viele Grüße
Wolfgang
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Erste Versuche

Beitrag von Werner_Bayern »

Servus Wolfgang,

mein Fehler, hab DB mit DBE verwechselt.

Hab mir das jetzt bei mir mal genauer angesehen und kann Deinen Fehler nachstellen. Wenn ich mir dann per PGAdmin das Statement anschaue, kommt folgendes beim PG an:
CREATE DATABASE "$1" WITH OWNER = "$2" ENCODING = 'UTF8'
das kann nicht funktionieren! Da werden die beiden Parameter DbName und Owner nicht ersetzt, da stimmt was nicht. Würde ich an Alaska melden.

Ersetze mal den Code zur Erzeugung der Datenbank in CheckDataExists() durch folgenden:

Code: Alles auswählen

  // Prüfen, ob die Datenbank exisiert. Wennn nicht, neu erzeugen
  oInfo := DacSchema():New(oS)
  IF(!oInfo:isDatabase(cDB))
    oStmt := DacSQLStatement():FromChar([CREATE DATABASE xppsamples WITH OWNER = postgres ENCODING = 'UTF8'])
    oStmt:Build():Execute()
  ENDIF
Dann funktioniert es!
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Erste Versuche

Beitrag von Wolfgang Ciriack »

Hallo Werner,

danke für das Probieren und Finden des Fehlers.
Werde ich nachher gleich mal probieren.
Viele Grüße
Wolfgang
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Erste Versuche

Beitrag von Wolfgang Ciriack »

Hallo Werner,
das klappt auch nicht: Statement has no parameter with Name(::dbname)
Habe jetzt mal eine Mail and den Alaska Support geschrieben.
Viele Grüße
Wolfgang
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Erste Versuche

Beitrag von Werner_Bayern »

Servus Wolfgang,

doch, das klappt, Du musst den Teil aber komplett mit meinem geposteten Code ersetzen! Du hast bei Dir noch

Code: Alles auswählen

oStmt:dbname := cDB
oStmt:owner
im Code :wink:
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Erste Versuche

Beitrag von Wolfgang Ciriack »

Ok, danke Werner, du hast Recht. Man sollte schon genau hinschauen #-o
Viele Grüße
Wolfgang
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Erste Versuche

Beitrag von Wolfgang Ciriack »

Viele Grüße
Wolfgang
Antworten