Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Fehlermeldung bei Zugriff über Postgresql (https://www.delphipraxis.net/195521-fehlermeldung-bei-zugriff-ueber-postgresql.html)

EdAdvokat 7. Mär 2018 08:35

Datenbank: Postgresql • Version: 9.0 • Zugriff über: ZeosLib

Fehlermeldung bei Zugriff über Postgresql
 
Ich experimentiere mit Postgresql und versuche vergeblich eine Verbindung zur Datenbank herzustellen. Dabei habe ich sowohl die Zeos-Komp. als auch FireDAC verwendet. Wenn ich das Query auf active stellen will erhalte ich folgende Fehlermeldung:
Zitat:

---------------------------
Fehler
---------------------------
[FireDAC][Phys][PG][libpq] fe_sendauth: no password supplied
.
---------------------------
OK
---------------------------
Ich habe es bereits auch mit Postgresql 10 versucht, aber auch ohne Erfolg. Ich vermute, irgendetwas stimmt mit der libpg.dll nicht.
Eingestellt habe ich PostgreSQL über die FDDrivers.ini mit folgenden Angaben:
Zitat:

[PG]
VendorLib=C:\data\pgdriver\akt\libpq.dll
VendorLib=C:\data\pgdriver\ssleay32.dll
VendorLib=C:\data\pgdriver\libeay32.dll
VendorLib=C:\data\pgdriver\libintl-8.dll
VendorLib=C:\data\pgdriver\libiconv-2.dll

[PG9.0]
BaseDriverID=PG
VendorLibWin32=C:\Program Files (x86)\PostgreSQL\9.0\bin\libpq.dll


[PG10]
BaseDriverID=PG
VendorLibWin32=C:\Program Files\PostgreSQL\10\bin\32\libpq.dll
VendorLibWin64=C:\Program Files\PostgreSQL\10\bin\libpq.dll
Irgendwie will es einfach nicht klappen. Kann mir jemand auf die Sprünge helfen?

jobo 7. Mär 2018 08:46

AW: Fehlermeldung bei Zugriff über Postgresql
 
Ich tippe eher auf ein Konfigurationsproblem.

1.Frage:
Liegt die DB lokal oder remote? (lokal dann vermutlich Windows, remote vielleicht Linux?)

2.Frage:
Sind pg_hba conf und postgres conf entsprechend angepasst?

Es gibt verschiedene Login Verfahren bei pg und da musst Du Dich bzw. die DB drauf einstellen.
Auf dem server sagt man, wer auf welche DB mit welchem Verfahren zugreifen kann.
Und man sagt ihm, welche IP überhaupt dürfen.

P.S.: Du solltest unabhängig von Delphi mit irgendeinem Client auf die DB kommen. Solche Test empfehlen sich grundsätzlich, bevor man mit libs/dlls usw. rumbastelt. Bspw. sollte es mit PGADMIN funktionieren, dann wie gewünscht auch mit verschiedenen Usern.
Wenn das schon nicht geht, braucht man mit Delphi nicht anzufangen.

haentschman 7. Mär 2018 08:50

AW: Fehlermeldung bei Zugriff über Postgresql
 
Moin...:P
Zitat:

Wenn ich das Query auf active stellen will
...im Objektinspektor oder per Code?

EdAdvokat 7. Mär 2018 09:08

AW: Fehlermeldung bei Zugriff über Postgresql
 
Hallo #jobo zu 1 die DB liegt lokal auf einem W-10 Rechner unter c:\Data\kunden.pgsql
zu 2. da wird es spannend, denn dazu kann ich überhaupt nichts sagen. Was muss ich da machen?
Ich habe die Datenbank und die Tabelle mit dem Admin-Tool von Postgresql erstellt und habe dann auch einige Probedaten mit diesem Tool eingepflegt.
Eigentlich geht es mir nur daraum ähnlich wie mit SQlite oder Firebird einen Zugriff auf eine Postgresql-DB zu erhalten.

Hallo haentschman ich habe es lediglich mit dem Objektinspektor versucht. Egal ob ich im Query auf active oderim con auf connected
schalte, es kommt immer diese Meldung, lediglich unter den Zeos-Komp wird die Fehlermeldung mit SQL Error eingeleitet.

jobo 7. Mär 2018 09:16

AW: Fehlermeldung bei Zugriff über Postgresql
 
Naja wenn Du mit dem Admintool drauf warst, geht es ja oder? Es gibt also kein grundsätzliches Konfigurationsproblem wie von mir beschrieben.
Die Frage ist, welche User Du verwendet hast.
M.E. wird bei der Installation von pg unter Windows ein eigener User angelegt, also ein lokaler Windows User. (Version 9 ist übrigens schon "sehr" alt, ich empfehle die aktuelle. Die verwendet allerdings eine andere Adminoberfläche mit der ich mich nicht so auskenne, andere Baustelle. Von PGAdmin gibt es eine LTS Version die immer noch installiert werden kann)
Hast Du andere User angelegt? Wie hast Du Dich initial angemeldet?

FBrust 7. Mär 2018 09:22

AW: Fehlermeldung bei Zugriff über Postgresql
 
Hallo,

mal ganz banal:

Hast Du im OI bei der verwendeten DB-Connection Benutzername und Kennwort eingetragen?


Gruß
Frank

jobo 7. Mär 2018 09:27

AW: Fehlermeldung bei Zugriff über Postgresql
 
Zitat:

Zitat von FBrust (Beitrag 1395414)
Hast Du im OI bei der verwendeten DB-Connection Benutzername und Kennwort eingetragen?

Ja, wenn man von sqlite herkommt, wäre das auch möglich.

EdAdvokat 7. Mär 2018 09:50

AW: Fehlermeldung bei Zugriff über Postgresql
 
Nochmals zur Erklärung: ich habe die Tabelle Kunden mit dem Admin-Tool III von PG erstellt und kann im Admin-Tool darauf zugreifen und auch weitere
Kundendaten eintragen.(ist ja nur für mich zur Übung - keine operativen Daten)
Hier das SQL create: (aus einer Beschreibung für die Anlage einer entspr. Tab.)
Delphi-Quellcode:
-- Table: kunden

-- DROP TABLE kunden;

CREATE TABLE kunden
(
  kundennr integer NOT NULL,
  anrede character varying(20) NOT NULL,
  firma character varying(50),
  titel character varying(30),
  "name" character varying(30) NOT NULL,
  vorname character varying(30),
  email character varying(50) NOT NULL,
  passwort character varying(8) NOT NULL,
  kundeseit date NOT NULL,
  CONSTRAINT pk_kunden PRIMARY KEY (kundennr)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE kunden OWNER TO postgres;

Dann habe ich diese erstellte Datenbank nach C:\data\kunden.pgsql kopiert und greife mit den Zeos-Komp oder auch mit FireDac darauf zu.
Ebenfalls in c:\Data habe ich die libpq.dll gespeichert und greife mit den Zeos-Komp.im Con darauf zu.
Stelle ich Benutzername und Password im OI ein kommt folgende Errormeldung
Zitat:

---------------------------
Fehler
---------------------------
SQL Error: FATAL: Passwort-Authentifizierung f�r Benutzer �user� fehlgeschlagen.
---------------------------
OK Details >>
---------------------------
Im PG Admin-Tool ist PimaryKey pk_kunden auto eingestellt. Irgendeine Passwordeinstellung habe ich nicht gefunden.
Was ist mit den zuvor genannten config-Dateien. Die habe ich zwar in PG Data gefunden doch daraus werde ich nicht schlau. Muss ich da was einstellen?
Doch ich frage mich, wenn ich die DB-Tabelle unabhängig von PG in ein Verzeichnis C:\Data kopiert habe und über den OI von Delphi darauf zugreife ebenso
wie auf die libpq.dll wo soll denn da eine Passwordabfrage gespeichert worden sein?


Irgendwie soll es nicht werden.ist die Zeile von Belang? : ALTER TABLE kunden OWNER TO postgres; Er sagt da wohl dass die Tabelle Kunden Postgres gehöre oder?

jobo 7. Mär 2018 10:17

AW: Fehlermeldung bei Zugriff über Postgresql
 
Ok, Postgres Dateien kopieren (also Datenbankfiles) machst Du niemals!
Die liegen da wo sie liegen. Punkt.

Das ist keine Filebasierte DB wie sqlite oder access oder auch firebird.

Es besteht auch keine Notwendigkeit dazu, der Server liefert die Daten unabhängig von der lokalen Lage an alles und jeden aus, den Du dazu berechtigst.

Falls Du mit dem Original noch arbeiten kannst, schau Dir die Verbindungseinstellungen der DB an und trage diese Daten in Deinen Client Komponenten ein. Also DB Name, Host, Port und schau was passiert.

jobo 7. Mär 2018 10:41

AW: Fehlermeldung bei Zugriff über Postgresql
 
Nochmal als Ergänzung.
eine File basierte Datenbank benötigt als Zugriffsangabe natürlich einen Pfad.

Umgekehrt wird in einem Client Server System eben kein Pfad für Datenzugriff benötigt und angegeben.
Man addressiert den Rechner auf dem der Datenbankserver läuft, gibt einen Namen der Datenbank an (dort können mehrere liegen) und einen Port. (das ist je nach Hersteller immer etwas unterschiedlich, aber im Prinzip gleich)

Wie gesagt, wenn Du mit PG Admin arbeiten kannst, sind die Einstellungen der Config Files erstmal okay. Denn Du kommst ja mit einem Clientprogramm auf die Datenbank.

In PGAdmin kannst Du links im Objektbrowser deine lokale DB Verbindung anklicken und rechts im Tab Eigenschaften alle notwendigen Einträge ablesen, die in anderen Clients angegeben werden müssen zum connecten.

Wenn Du Kopien der Datenbank brauchst (Backup, Test, Ausprobieren), nimmst Du pgdump und erstellst damit ein Script / Dump, den Du unter anderem Namen wieder in deine lokale DB oder eine entfernte einspielst.

Hier ist eine knappe Variante beschrieben, es gibt da verschiedenste Möglichkeiten:
https://www.mkyong.com/database/back...umppg_restore/

EdAdvokat 7. Mär 2018 11:02

AW: Fehlermeldung bei Zugriff über Postgresql
 
mir wächst bald eine Feder. Es will nicht klappen. Immer wieder diese blöde Meldung.
Habe also im OI über Zeos-Lib Con eingetragen : Database W10-NW\Kunden (W10-NW ist mein Computername reicht das???)
dann HostName localhost
dann LibaryLocation C:\data\pgdriver\akt\libpq.dll
Port 5532 wie zur Installation angegeben.

Klaus01 7. Mär 2018 11:23

AW: Fehlermeldung bei Zugriff über Postgresql
 
... der default Port bei PG ist aber 5432.

Vielleicht hilft auch dieses Tutorial: https://www.youtube.com/watch?v=rXvpFq3gnZw

Grüße
Klaus

EdAdvokat 7. Mär 2018 11:38

AW: Fehlermeldung bei Zugriff über Postgresql
 
Entschuldigung, habe den falschen Port jedoch nur im Post falsch geschrieben. im Programm war alles richtig.
Nun habe ich nochmals geschaut nach den loin Name und PW und habe dies auch im OI bei Password und User eingegeben und mich dann so angemeldet. Wieder die Fehlermeldung
Zitat:

---------------------------
Fehler
---------------------------
SQL Error: FATAL: Passwort-Authentifizierung f�r Benutzer �newuser� fehlgeschlagen.
---------------------------
OK Details >>
---------------------------
Was ist das nur? Hostname localhost und Database mit W10-NW\Kunden ist doch wohl exakt?Die Tabelle wird mir im Admin-Tool als Kunden angezeigt.
Muss da noch etwas mehr Phath eingegeben werden?

Klaus01 7. Mär 2018 11:45

AW: Fehlermeldung bei Zugriff über Postgresql
 
Hallo,

die Datenbank heißt "Kunden" ohne Rechnernamen.
Ein Pfad musst Du nicht eingeben, da die Datenbank über den Port 5432 angesprochen wird.
Das DBMS weiß dann wo die Daten liegen.

Grüße
Klaus

jobo 7. Mär 2018 11:49

AW: Fehlermeldung bei Zugriff über Postgresql
 
Zitat:

Zitat von EdAdvokat (Beitrag 1395441)
Hostname localhost und Database mit W10-NW\Kunden ist doch wohl exakt?Die Tabelle wird mir im Admin-Tool als Kunden angezeigt.
Muss da noch etwas mehr Phath eingegeben werden?

Ich kenne die Kompenenten nicht, aber vergiß bitte den Path! Es geht hier nirgendwo um Dateien.
Du musst den Rechner (localhost, DNS oder IP, das hängt dann ggf. von der Konfig ab) , den Datenbanknamen (auch das ist kein Dateiname) und den Port angeben!

Tu Dir den kleinen Gefallen selbst und mache Dich mit dem Konzept dieser Systeme vertraut. MSSQL, Oracle, Postgres .. es geht niemals um Pfade oder Dateinamen. Auch ein Benutzer Deiner Software braucht niemals einen Dateizugriff auf den Server.

EdAdvokat 7. Mär 2018 12:27

AW: Fehlermeldung bei Zugriff über Postgresql
 
hostname: localhost
Database: kunden
Port: 5432
Ich habe mal vor einiger Zeit eine MariaDB aufgesetzt und da war als Hostname/IP: W10-NW eingetragen ist das irgendwie von Belang? W10-NW ist mein Rechnername.
Ich bin irgendwie mit meinem Latein am Ende.

jobo 7. Mär 2018 12:43

AW: Fehlermeldung bei Zugriff über Postgresql
 
5432 ist nur der Default Port, ist das bei Dir auch so?
Werden bspw. mehere Versionen von Postgres installiert oder ist der Port durch andere Protokolle belegt, wird er natürlich nicht genommen.
Was steht in PGAdmin?

EdAdvokat 7. Mär 2018 14:41

AW: Fehlermeldung bei Zugriff über Postgresql
 
Hallo Jobo, der aktuelle Port für PG 09 ist 5433 und den habe ich so eingestellt.
Ich habe jedoch auch PG Version 10 installiert mit dem Port 5432.
Nun habe ich mir mal die Datei pg_hba angesehen und dort ganz zum Schluss folgende Einstellungen
vorgenommen:
Zitat:

# TYPE DATABASE USER CIDR-ADDRESS METHOD

# IPv4 local connections:
host all all 127.0.0.1/33 md5
# IPv6 local connections:
# host all all ::1/128 md5
host Kunden superuser 127.0.0.1/33 md5

Wenn ich jetzt auf connect cklicke kommt folgende Fehlermeldung:
Zitat:

---------------------------
Fehler
---------------------------
SQL Error: FATAL: konnte pg_hba.conf nicht laden.
---------------------------
OK Details >>
---------------------------

Möglicherweise nähern wir uns des 'Pudels Kern' (Goethe Faust)
Muss ich da noch was verändern und wie ist es mit den anderen von Dir erwähnten config-Dateien?

jobo 7. Mär 2018 19:35

AW: Fehlermeldung bei Zugriff über Postgresql
 
Also hier sind jetzt 3 oder 4 verschiedene Portnummern im Spiel.
Du hast zuletzt evtl. die richtige eingetragen: 5433?
aber gleichzeitig die pg_hba.conf geändert, sodass die Netzmasken vermutlich nicht mehr stimmen? Was soll 127.0.0.1/33 sein? Meinst Du vielleicht 127.0.0.1/32?
Wenn Du als erste nicht kommentierte Zeile all all erlaubst, brauchst Du später keine weiteren Details anzugeben.
Ich vermute mal, die Datei war vor der Änderung ok.
Wenn Du mehrere Installationen hast, musst Du natürlich auch die richtige Datei ändern.

Ob die Konfdatei die Angabe superuser schluckt, würde ich auch bezweifeln. Oder hast Du einen solchen User angelegt? Nach einer neuen Installation gibt es jedenfalls nur den User postgres. Egal, wird die Zeile wieder raus. Die ALL ALL Variante darüber erschlägt den Rest sowieso.

Die Datei ist jedenfalls so geändert (zerstört), dass sie nicht mehr gelesen werden kann. Ob das schon die von Dir gezeigten Änderungen bewirken oder weiteren Einträge, die nicht hier stehen, kann ich so nicht sagen, hab gerade keinen Windows Postgres Zugriff.

EdAdvokat 7. Mär 2018 20:25

AW: Fehlermeldung bei Zugriff über Postgresql
 
ich habe auch bemerkt, dass ich zuviel verschlimmbessert habe und somit habe ich Postgresql 9.6 neu installiert. Port bleibt bei 5432.
Leider habe ich nach dieser Installation das Tool für SQL-Befehle nicht mehr, um die Datenbank und die Tabelle leichter zuerstellen.
Das Ding ist insgesamt sehr sperrig. Für die Spaltenvariablen läßt sich charakter varying(30) nicht einstellen, oder ich selle mich da zu blöd an. So habe ich für die neue Tabelle Kunden einfach Charakter als Text-var genommen - geht wohl auch?
Jedenfalls bin ich genau wieder an dem Punkt, an dem ich bereits war.
Nun bekomme ich die Fehlermeldung:
Zitat:

---------------------------
Fehler
---------------------------
SQL Error: FATAL: Datenbank �Kunden� existiert nicht.
---------------------------
OK Details >>
---------------------------
also er erkennt die DB Kunden nicht. Ich habe zwischenzeitlich so ein Frust, doch ich will es einfach schaffen.
Es ist für mich einfach nur so aus Spass - ohne Hintergrund. Es muss doch zu schaffen sein!!!
Im AdminTool ist die Tabelle vorhanden. Leider läßt sich sich nicht ordnungsgemäß mit Daten füllen. Warum das nicht funktioniert kann ich noch nicht
sagen. Ich muss wohl erst morgen weiter machen damit, damit ich nicht noch in die Tischkante beiße.

RSF 7. Mär 2018 21:02

AW: Fehlermeldung bei Zugriff über Postgresql
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das sollte in der ZConnection1 stehen. (siehe Beispiel im Anhang)

Vorausgesetzt:
1. Postgres ist korrekt installiert und der Dienst läuft.
2. DB Kunden existiert.
3. User Admin mit entsprechenden Password (und Rechte) ist in Postgres vorhanden.

Dann sollte ein Connected auch erfolgreich sein.

EdAdvokat 7. Mär 2018 22:15

AW: Fehlermeldung bei Zugriff über Postgresql
 
postgres läuft als Dienst und ist odentlich installiert.
Die DB Kunden wird im Admin-Tool erkannt und somit gehe ich davon aus, dass die DB mit der Tabelle Kunden existiert?!
User Admin mit Rechte usw. ist so nicht vorhanden. ich melde mich mit postgres und PW an. Ist das ein Problem?
Er meldet mir jetzt, dass die DB Kunden nicht existieren würde. Doch im Admin-Tool ist sie zu sehen auch mit einer Zeile Daten.???!!!
Ich werde morgen eine neue Tabelle erstellen und hoffen, dass die erkannt wird. Es wäre doch so schön, wenn ich mit einem SQL-Tool und create Database...arbeiten könnte. Leider bietet mir das vorliegende Programm einen derartigen Service nicht an.

RSF 7. Mär 2018 22:36

AW: Fehlermeldung bei Zugriff über Postgresql
 
Der User Postgres ist auch OK (Superuser)
Ich glaube hier liegt ein Begriffs- Missverständnis vor.
Kunden = Datenbank oder Tabelle(Name)??
z. B.
Datenbank = „Anschriften“ beinhaltet:
Tabelle = „Kunden“
Tabelle = „ Lieferanten“


Bei Database wird der Name der Datenbank angegeben und nicht die Tabelle.

EdAdvokat 8. Mär 2018 03:11

AW: Fehlermeldung bei Zugriff über Postgresql
 
#RSF vielen Dank. Es war wirklich ein Verständnisproblem, denn ich habe stets kunden bei Database statt postres eingetragen.
Nach der Korrektur habe ich jetzt Zugang zur Tabelle Kunden der Datenbank postgres.
Noch ein Problem habe ich bei der Erstellung der Tabellen. die Variable charakter varying(20) beispielsweise für ein Textfeld, so wie ich es im Beispielprogramm gesehen habe, läßt sich nicht einstellen.
Wie im #8 beschrieben wollte ich jetzt auch mit create Table Kunden arbeiten, doch ich kann an keiner Stelle mit Copy/Paste dieses Beispiel eingeben und ausführen. In der vorherigen Version 9.0 ging das noch, doch die habe ich zwischenzeitlich deinstalliert.
Wie kann man also recht unkompliziert eine neue Table anlegen? Bislang verwende ich dazu das Admin-Tool 4.
Nochmals vielen Dank und somit hatten alle Bemühungen doch ein Ergebnis.

jobo 8. Mär 2018 05:27

AW: Fehlermeldung bei Zugriff über Postgresql
 
Du kannst die LTS (LongTermSupport) Version von PGAdmin nehmen.

Alles zusammen gibt es hier:
https://www.openscg.com/products/postgres-by-bigsql/
bzw. hier
https://www.openscg.com/bigsql/postg...nstallers.jsp/

hier vermutlich direkt nur PGAdmin
https://www.pgadmin.org/download/pgadmin-4-windows/

Ansonsten kannst Du auch irgendein anderes SQL Tool nehmen, das mit pg spricht.
Z.B.:
https://dbeaver.jkiss.org/download/

Es ist übrigens empfehlenswert, wirklich die latest and greatest Version (10.xy) der Datenbank einzusetzen. Die schaffen es immer wieder, coole neue Features einzubauen oder einfach irgendwo noch mehr Performance zu liefern.

Zuletzt noch die Möglichkeit einfach mit psql zu arbeiten (nutze ich öfters weil es per ssh in der console läuft) oder per Delphi ein ExecSQL abzusetzen, also ein kleines eigenes Programm zu schreiben. Ein Memo und ExecSQL würde ja schon reichen (und sinnvolle Fehlerbehandlung/-ausgabe)

jobo 8. Mär 2018 05:32

AW: Fehlermeldung bei Zugriff über Postgresql
 
Zitat:

Zitat von EdAdvokat (Beitrag 1395525)
Noch ein Problem habe ich bei der Erstellung der Tabellen. die Variable charakter varying(20) beispielsweise für ein Textfeld, so wie ich es im Beispielprogramm gesehen habe, läßt sich nicht einstellen.

Da müsstest Du vielleicht mal Deinen Code zeigen.
#8 ist vollkommen ok.
charakter varying(20) schreibt man mit c nicht mit k.
Ist das ein Delphiproblem oder ein SQL Problem?

EdAdvokat 8. Mär 2018 15:23

AW: Fehlermeldung bei Zugriff über Postgresql
 
Hallo nochmals, nachdem es mir trotz meiner Blödheit:oops: nun doch gelungen ist sowohl eine BeispielDB mit einer Beispiel-Tabelle in PG zu erstellen und dann auch unter Delpi mit den Zeos-Kom. zum laufen zu bringen, habe ich mir Deinem Rat folgend das Programm installiert:
Zitat:

Zitat von jobo (Beitrag 1395529)

Ansonsten kannst Du auch irgendein anderes SQL Tool nehmen, das mit pg spricht.
Z.B.:
https://dbeaver.jkiss.org/download/

Ich bin noch am probieren, doch es sieht besser aus, als das sperrige Admin-Tool von PG.
Am besten hat es geklappt, als ich das in #8 genannte sql-create in PG zum laufen bekommen habe. Wie ich das genau gemacht habe, will ich nochmals ergründen und mir als Algorithmus merken.
Die dortigen SQL-Editoren sind eher nur views, denn man kan da nicht so recht mit copy/Paste arbeiten oder ich stelle mich da ebenfalls zu dumm an. Es ist vielleich auch noch die Grippe, mit der ich mich noch immer herumschleppe.
Also wenn ich im Admin-Tool eine neue Tabelle erstelle klappt das so la la, denn eine Einstellung für Texte mit character varying(30)beispielsweise ist nicht möglich und mit dem Primärschlüssel für die ID beispielsweise meckert er mit mir.
Wenn ich also alle Spalten benannt habe und die Tabelle im Admin-Tool als erstellt sichtbar ist, wollte ich nun Daten zur Probe eingeben. Auch dass gelingt mir leider nicht. Nun habe ich dies in DBeave versucht, jedoch auch dort kann ich als Probe keine Zeile mit Daten füllen. Muss man das ganz anders machen? ich gehe auf newAdress Daten in sql-Console abfragen in DBeave oder im Admin-Tool über ViewEdit die ersten 100.
Wie bekomme ich also die Daten tatsächlich in die Tabelle?

hoika 8. Mär 2018 16:27

AW: Fehlermeldung bei Zugriff über Postgresql
 
Hallo,

Ich würde die Abkürzung (Alias) nehmen
https://www.postgresql.org/docs/8.4/...character.html

character varying(30) -> VarChar(30)

EdAdvokat 8. Mär 2018 17:36

AW: Fehlermeldung bei Zugriff über Postgresql
 
Ich schildere mal kurz meine Versuchsergebnisse bei der Erstellung einer Tabelle und bei der Eingabe von Daten in diese Tabelle:
1. ich wandle das in #8 aufgeführte sql-create nach meinen neuen Bedürfnissen um.
2. ich rufe DBeaver auf und nach Guttenberg copy/paste ins SQL-Fenster und mit Strg Enter wird die Tabelle erstellt.
3. da ich in DBeaver und auch im Admin-Tool von PG (neuste Version) nirgens Daten in die neue Tabelle eingeben kann lade ich die Kopfzeile
der Tabelle über Delphi in ein dbGrid und gebe dort die Daten ein.
Konfortabel ist wesentlich anders.
Wenn ich eine Tabelle mit den Bordmitteln erstelle geht überhaupt nichts, denn er setzt "Name" usw. (anführungsz.)
Man kann nicht
Zitat:

strasse character varying(30),
eingeben, dass dann bei der Dateneingabe auch exakt verarbeitet werden kann.
Bei Versuchen der Dateneingabe mit Bordmitteln von Admin-Tool erhalte ich bei Texteingaben (character) den Hinweis WideMemo und eine Eingabe
geht ins Leere.
Es ist ganz sicher so, dass das Problem vor dem Computer sitzt und meinen Namen trägt.
Doch soweit bin ich erst einmal gekommen und habe mir sehr umständldich einige Probetabellen erstellt.
So kann es doch nicht richtig sein.
Welche Erfahrungen habt ihr und wie erstellt ihr eine neue Tabelle und wie kommen bei Euch dann auch Daten da rein mit Admi-Tool oder DBeaver?
Welches Format benutzt ihr für Texteingaben in diesen Programmen?

jobo 8. Mär 2018 17:52

AW: Fehlermeldung bei Zugriff über Postgresql
 
Zitat:

Zitat von hoika (Beitrag 1395590)

character varying(30) -> VarChar(30)

Das ist zwar umständlicher in der langen Form, entspricht aber glaub ich dem original Typ, sollte also als erstes funktionieren.
Wie immer bei solchen Fehlern/Problemen:
Eine Fehlermeldung wäre hilfreich.

Was DBeaver angeht:

Wenn bereits Datensätze drin stehen (Reiter "Daten" einer Tabelle), einfach draufklicken und schreiben. Irgendwann unten "Save" drücken.
Ansonsten ist dort am unteren Rand eine ICON Reihe für "Insert, Copy, Delete, .."

Tabelle öffnen:
Ausgehend vom Browser "Database Navigation" die Datenbank auswählen, Schemas öffnen, dann normalerweise public Schema auswählen, Tables öffnen, gewünschte Table durch Doppelklick öffnen.
Es erscheint ein neuer Reiter für die Tabelle mit den Unterreitern
Eigenschaften, Daten, ER Diagramm. Unter Reiter Daten kann man editieren.

Editieren von Tabellen in PGAdmin:
Funktioniert nur, wenn die Tabellen einen PK haben.
In DBeaver geht es auch so.

SQLEditor mit DBeaver per F3 oder Menu SQL Editor. Da hat man sogar auto Vervollständigung.

@neuer Beitrag (http://www.delphipraxis.net/1395594-post29.html)
Bitte schreib doch mal irgendwo eine Fehlermeldung der datenbank auf.

EdAdvokat 8. Mär 2018 17:57

AW: Fehlermeldung bei Zugriff über Postgresql
 
Danke Hoika jetzt habe ich
Zitat:

character varying(30)
hinbekommen. Doch auch eine Spalte "Namen" läßt sich so nicht füllen.
So wie es auf der beschriebenen Seite steht will ich es doch auch mit dem Admin-Tool machen.

jobo 8. Mär 2018 18:12

AW: Fehlermeldung bei Zugriff über Postgresql
 
Wie ist die Spalte definiert?
name
"name"
"Name"
Namen
"Namen"
..
..

Du könntest etwas klarer beschreiben, was das Problem ist.
"Lässt sich so nicht füllen .." in Delphi? in DBeaver ... ?

EdAdvokat 8. Mär 2018 18:36

AW: Fehlermeldung bei Zugriff über Postgresql
 
Ich will nun wirklich nicht nerven und glaube, dass ich mich wohl noch intensiver damit beschäftigen muss.
zur Frage von Jobo: Die Spalte Name erhält im Admin-Tool folgendes Format:
Zitat:

-- Column: public."geschAdress"."Name"

-- ALTER TABLE public."geschAdress" DROP COLUMN "Name";

ALTER TABLE public."geschAdress"
ADD COLUMN "Name" character(1) COLLATE pg_catalog."default";

Ich habe nur Spalten ohne " definiert.
egal, denn jetzt mache ich es ohnehin so wie beschieben. Eigentlich habe ich gedacht, dass mir das Admin-Tool wirklich auch ein SQL create wie in #8
beschieben liefern würde.

Mein Problem auf den Punkt gebracht ist, wie kann ich mit dem Admin-Tool oder mit DBeaver eine nunmehr erstellte Tabelle auch mit Daten füllen?

RSF 8. Mär 2018 18:53

AW: Fehlermeldung bei Zugriff über Postgresql
 
Zitat:

Zitat von EdAdvokat (Beitrag 1395598)
Mein Problem auf den Punkt gebracht ist, wie kann ich mit dem Admin-Tool oder mit DBeaver eine nunmehr erstellte Tabelle auch mit Daten füllen?

z.B. im SQL Editor
Delphi-Quellcode:
INSERT INTO public.geschAdress(name, vorname)Values ('Muster','Hans');

SQL lernen : https://www.1keydata.com/de/sql/

EdAdvokat 8. Mär 2018 19:38

AW: Fehlermeldung bei Zugriff über Postgresql
 
Danke RSF Habe nunmehr auch im SQL Editor das entspr. Script gefunden und werde damit experimentieren,um Daten in die Tabelle einzugeben. Etwas ungewohnt.
Zitat:

INSERT INTO public."geschAdress"(
"Name", "Vorname", "Strasse", "Ort", "PLZ", "Geb", "ID")
VALUES (Albrecht, Hans, Mausestrase 7, Berlin, 12352, 22.03.1948, 1);
doch diese Daten kommen in der Tab nicht wirklich an.
Eine Erklärung dafür habe ich nicht, denn so sollte es doch gem. SQL gehen.
Egal, ich werde mich nochmals intensiv damit beschäftigen. Ist ja nur für mich als Hobby.
Ich wünsche Euch einen schönen Feierabend und Danke für die bisherige Hilfe.

p80286 8. Mär 2018 21:51

AW: Fehlermeldung bei Zugriff über Postgresql
 
Zitat:

Zitat von EdAdvokat (Beitrag 1395605)
Danke RSF Habe nunmehr auch im SQL Editor das entspr. Script gefunden und werde damit experimentieren,um Daten in die Tabelle einzugeben. Etwas ungewohnt.
Zitat:

INSERT INTO public."geschAdress"(
"Name", "Vorname", "Strasse", "Ort", "PLZ", "Geb", "ID")
VALUES (Albrecht, Hans, Mausestrase 7, Berlin, 12352, 22.03.1948, 1);
doch diese Daten kommen in der Tab nicht wirklich an.

Finde ich nicht so verwunderlich, folgende Syntax scheint mir eher Erfolg zu versprechen (ist aber von DB zu DB unterschiedlich:
SQL-Code:
INSERT INTO public.geschAdress(   Name, Vorname, Strasse, Ort, PLZ, Geb, ID)
   VALUES ('Albrecht', 'Hans', 'Mausestrase 7', 'Berlin', '12352', '22.03.1948', 1);
Ich hoffe GEB hat einen Datumstyp und nicht String? Falls doch, freunde Dich besser mit dem Format YYYY-MM-DD an.
Und ggf. hilft ein
SQL-Code:
commit;
dem Datenspeichern auf die Sprünge.

Gruß
K-H

jobo 9. Mär 2018 07:08

AW: Fehlermeldung bei Zugriff über Postgresql
 
Die SQL Syntax und speziell die verschiedenen Anführungszeichen solltest Du Dir mal genauer anschauen.
In Deinem Statement geht es wild durch einander, teilweise falsch, teilweise ungünstig.
p80286 hat es schon korrigiert.

Generell: Anführungszeichen um Feldnamen werden verwendet, wenn der Feldname mglw mit einem Befehl (SQL) verwecvhselt werden kann.
Die Nutzung ist legitim, hat aber den unangenehmen Seiteneffekt, dass man mit Anführungszeichen exakt auf die Schreibweise achten muss, jeder Buchstabe so wie definiert in Groß oder Kleinschrift.

Feldwerte dagegen benötigen nur bei Texten die einfachen Anführungszeichen.
Datumswerte sind dabei ein Sonderfall, hier kommt es stark auf die Notation, Konvertierungsfunktionen an.
Zahlen brauchen keine Anführungszeichen.

Ich empfehle Dir noch mal, Dir die Fehlertexte ,- meldungen dieser Systeme anzuschauen, manchmal sind sie etwas heimtückisch, aber oft steht das Problem im Klartext dort.
Wenn das System aufmerksam installiert wurde, sind auch die Fehlertexte in gewünsnchter Sprache.

Und zum Thema nerven / Nerven. Die liegen schnell blank, wenn scheinbar nichts funktioniert. Da hilft nur Durchatmen und aufmerksam die Hinweise zu lesen, die Du bekommst. Ungeduld hilft dagegen nicht viel, statt dessen mal ein fertiges Tutorial durcharbeiten.
z.B.:
https://www.delphi-treff.de/tutorials/datenbanken/

Ich finde das "wissen wollen " immer gut, besonders wenn es um Delphi und Postgres geht. :)

EdAdvokat 9. Mär 2018 09:54

AW: Fehlermeldung bei Zugriff über Postgresql
 
Danke #p80286 und # jobo. Das Geb hat den Typ Date und es funktioniert sogar das deutsche Format. Das was ich gepostet habe, waren die entsprechenden Angebote und Ergebnisse des Admin-Tools.
Immmer dann wenn ich mich auf das sql-create aus #8 besonnen habe und es abgewandelt habe oder auch eigene Eingaben ohne " usw. vorgenommen habe, klappte die Erstellung der Tabelle, doch nur eine Dateneingabe im Admin-Tool ging nicht.
Ich war im Glauben, dass es ähnlich wie in anderen DB-Systemen (SQLite, FB, Access Absolute DB usw.)ein Managementtool gibt, mit dem man ein Tabelle erstellen und auch mit Daten füllen kann, ohne auf die Kommandozeile(SQL) zurückgreifen zu müssen - also in einer GUI.
Sicher muss ich mich noch tiefgründiger mit PostgreSQL beschäftigen und möglicherweise finde ich heraus, was ich da falsch gemacht habe.
Mit einigen Tutorials, die mir auch hier vorgeschlagen wurden, habe ich mich bereits beschäftigt. Es geht mir jedoch lediglich um die exakte Beherrschung des Admin-Tools von PG.
Da ich trotz Grippe mich erst seit wenigen Tagen mit PG erstmals beschäftigt habe, muß ich doch wohl noch tiefer einsteigen. Alles braucht seine Zeit.
Als Anfangserfolg wollte ich mir die Erstellung einer PG-Datenbank, die Erstellung einer Tabelle und das Auffüllen mit Daten bescheren, die dann auch in Delphi zum laufen gebracht werden.
Dieser Anfangserfolg ist nun vollbracht, trotz einiger Schwierigkeiten, aber auch die werden gemeistert.

p80286 9. Mär 2018 21:16

AW: Fehlermeldung bei Zugriff über Postgresql
 
Zitat:

Zitat von EdAdvokat (Beitrag 1395632)
Ich war im Glauben, dass es ähnlich wie in anderen DB-Systemen (SQLite, FB, Access Absolute DB usw.)ein Managementtool gibt, mit dem man ein Tabelle erstellen und auch mit Daten füllen kann, ohne auf die Kommandozeile(SQL) zurückgreifen zu müssen - also in einer GUI.

U.U. bist Du einem Missverständnis aufgesessen. Eine Datenbank ist ein Datenspeicher, nicht mehr und nicht weniger. Eine (Admin-)GUI ist die mehr oder weniger gelungene Verpackung der entsprechenden SQL-Befehle.
Ich habe in der Vergangenheit für verschiedene Datenbanken verschiedene Oberflächen genutzt (Access,Excel,Toad,Selbstgeschriebenes und teilweise die mitgelieferten Oberflächen) je nach Aufgabenstellung waren die verschiedenen Oberflächen mehr oder weniger gut geeignet. Mit anderen Worten DIE eierlegende Wollmilchsauoberfläche gibt es nicht und die Qualität der darunter liegenden Datenbank spiegelt sich oftmals nicht in der genutzten Oberfläche wieder.

Unter Umständen wäre es Für Dich z.B. einfacher den Tabelleninhalt mit Calc oder Excel zu erfassen, eine csv-Datei zu erstellen und diese in Deine Datenbank zu importieren, falls die von Dir genutzte DB diese Möglichkeit bietet.

Gruß
K-H

EdAdvokat 9. Mär 2018 22:20

AW: Fehlermeldung bei Zugriff über Postgresql
 
Danke @p80286 für Deinen Hinweis. Habe mir zwischenzeitlich auch die Hilfe und andere Bescheibungen für das Admin-Tool und auch für DBeaver durchgelesen und feststellen müssen, dass ich einem Irrglauben aufgesessen war. Ich glaube jedoch, dass eine Import/Export-Fkt. mit csv enthalten ist.
Da ich die ganze Sache nur für mich zum Test ergründen und damit experimentieren will habe ich die Daten also im Delphi-DBGrid eingegeben. Morgen werde ich versuchen Daten mit csv-Konvertierung einzugeben. Jedenfalls habe ich wieder ein neues DB-System (PostgreSQL) erschlossen, nachdem ich mit SQLite, Firebird, FireDAC ADO, XML, ABS bereits erfolgreich experimentiert habe.
Nur erfolglos war ich bislang mit der Implementierung von Excel. Das soll ganz einfach sein, doch ich bekomme das einfach noch nicht hin.
Ich kann zwar von Delphi aus eine leere Exceltab. aufrufen doch so richtig eine besehende Exceltab in ein DBGrid beispielsweise einzuladen hat noch nicht geklappt. OleDB ist da wohl ein Stichwort. Doch alles zu seiner Zeit.
Gegenwärtig ärgere ich mich mit einer blöden Fehlermeldung herum, wenn ich IB Tabellen in Delphi laden will :
Zitat:

Fehler
---------------------------
DBX-Fehler: Der Treiber konnte nicht korrekt initialisiert werden. Die Client-Bibliothek könnte fehlen, nicht ordnungsgemäß installiert sein, eine falsche Version haben, oder der Treiber fehlt möglicherweise im Systempfad..
---------------------------
OK
Ich finde dafür einfach noch nicht die Stellschrauben, um diesen Fehler zu beseitigen. Im Inet. sind div. Beiträge dazu vorhanden, doch bislang hatte ich noch nicht den durchschlagenden Erfolg in dieser Sache.
Habe zwischenzeitlich die dbxconnections.ini und dbxdrivers.ini bearbeitet, doch noch bin ich nicht am Ziel. Hoffentlich liege ich mit diesem Ansatz richt.
Nun ist für heute erst einmal Schluss. Nochmals Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz