SqlQuery funktioniert unter MySQL aber nicht unter Postgres

Alles rund um die Programmierung mit Qt
Antworten
gboelter
Beiträge: 80
Registriert: 5. Dezember 2007 14:52
Wohnort: Davao City, Philippines

SqlQuery funktioniert unter MySQL aber nicht unter Postgres

Beitrag von gboelter »

Hallo!

Ich habe hier eine simple Query, naemlich

Code: Alles auswählen

"SELECT Name, Nummer FROM lizenz".
die unter MySQL einwandfrei funktioniert.

Wenn ich versuche selbige Query unter PostgreSQL auszufuehren, also mit QPSQL statt QMYSQL, dann bekomme ich das hier zurueck:
ERROR: column "name" does not exist
LINE 1: SELECT name, nummer FROM lizenz
Selbstverstaendlich existiert das Feld und mit dem sqlbrowser aus den QT-Demos kann ich einwandfrei drauf zugreifen.

Ok, in Postgres direkt muesste ich's ja so schreiben:

Code: Alles auswählen

SELECT "Name", "Nummer" FROM lizenz;

aber sollte das nicht der Treiber entsprechend umsetzen?

Kennt sich da jemand aus?
Guenther
Davao City, Philippines, Planet Earth, 28°C

Qt 4.8.1 for Linux/X11 - Open Source Edition for Application Development
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

Naja, wenn die Syntax bei PSQL anders ist als bei MySQL kann der Treiber da auch nix dafür. Der Treiber ändert ja auch nicht die str_to_date's in to_date's wenn du Oracle verwendest...

Sprich: Ich halte es für unwahrscheinlich, dass der SQL Treiber deinen Query-String parst, um festzustellen, welche SQL-Variante es ist, um es dann in die des Treibers zu übersetzen.
gboelter
Beiträge: 80
Registriert: 5. Dezember 2007 14:52
Wohnort: Davao City, Philippines

Beitrag von gboelter »

pfid hat geschrieben:Naja, wenn die Syntax bei PSQL anders ist als bei MySQL kann der Treiber da auch nix dafür.
Nun ja, es muss aber doch eine bessere Loesung geben, als alle Queries mehrfach zu konstruieren und dann mit entsprechenden IF-Abfragen die jeweils richtige auszusuchen.
Guenther
Davao City, Philippines, Planet Earth, 28°C

Qt 4.8.1 for Linux/X11 - Open Source Edition for Application Development
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Vielleicht ist PosrtGres ja Case-Sensistitv - Du schreibst einmal 'Name' und in der Fehlermeldung steht 'name'. Hatte eigentlich nie Probleme mit Postgres in der Richtung.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
gboelter
Beiträge: 80
Registriert: 5. Dezember 2007 14:52
Wohnort: Davao City, Philippines

Beitrag von gboelter »

Christian81 hat geschrieben:Vielleicht ist PosrtGres ja Case-Sensistitv - Du schreibst einmal 'Name' und in der Fehlermeldung steht 'name'. Hatte eigentlich nie Probleme mit Postgres in der Richtung.
Hallo Christian,

stimmt, die Fieldnames sind in diesem Falle case sensitiv. Durchaus denkbar, dass da irgendwie ein Zusammenhang besteht.

Allerdings steht in der Abfrage 'Name' und das entsprechende Feld heisst auch 'Name'. Warum dann in der Fehlermeldung nur noch 'name' auftaucht ist mir bis dato noch ein Raetsel.

Nun ja, ich werd mal weiter forschen ...
Guenther
Davao City, Philippines, Planet Earth, 28°C

Qt 4.8.1 for Linux/X11 - Open Source Edition for Application Development
gboelter
Beiträge: 80
Registriert: 5. Dezember 2007 14:52
Wohnort: Davao City, Philippines

Beitrag von gboelter »

Christian81 hat geschrieben:Vielleicht ist PosrtGres ja Case-Sensistitv
Danke Christian,

Du hattest genau die richtige Eingebung.

Die Felder waren in der Tabelle als case-senstiv angelegt, und anscheinend will Postgres dann die Feldnamen als "Fieldname" uebergeben haben.

Ich hab das case sensitive jetzt rausgenommen, und schon akzeptiert Postgres meine Queries.
Guenther
Davao City, Philippines, Planet Earth, 28°C

Qt 4.8.1 for Linux/X11 - Open Source Edition for Application Development
gboelter
Beiträge: 80
Registriert: 5. Dezember 2007 14:52
Wohnort: Davao City, Philippines

Beitrag von gboelter »

Fall noch mal jemand vor diesem Problem steht, hier ist die Loesung:
Standard Groß- und Kleinschreibung von Namen

Wenn man einen Namen in Anführungszeichen setzt, spielt die Groß- und Kleinschreibung eine Rolle. Namen in Anführungszeichen werden von PostgreSQL 1:1 übernommen. Namen ohne Anführungszeichen werden immer in Kleinbuchstaben umgewandelt.
Guenther
Davao City, Philippines, Planet Earth, 28°C

Qt 4.8.1 for Linux/X11 - Open Source Edition for Application Development
Antworten