![]() |
Datenbank: postgres • Version: 10.4 • Zugriff über: unidac
Column "xxx" specified more than once
Hi Zusammen,
ich führe gerade eine Append auf eine Tabelle aus und er behauptet "Column 'xxx' specified more than once". Das macht meiner Meinung nach bei einer einzelnen Tabelle bzw. bei einem Append keinen Sinn. Weiß jemand zufällig wie ich mir die tatsächlich abgeschickte SQL (ich gehe mal davon aus, dass hier eine SQL generiert wird) ausgeben lassen kann, damit ich wenigstens sehe was passiert? Verrückt ist auch folgendes: In der Tabelle sind alle Felder klein geschrieben. Alle Felder werden in der Originalschreibweise angesprochen. Ändere ich den Befehl von
Delphi-Quellcode:
auf
APFAMPRU_SQL['Verfalldatum'] := DateAsNull(edVerfall.Date);
Delphi-Quellcode:
(also mit kleinem "V") dann geht es.
APFAMPRU_SQL['verfalldatum'] := DateAsNull(edVerfall.Date);
Die Zeile
Delphi-Quellcode:
stört ihn hierbei also von der Groß-/Kleinschreibung nicht!
APFAMPRU_SQL['Status'] := nStatus;
Wenn er bei allen Feldern meckern würde, wäre das ja klar. Dann wäre das einfach nur ein komischer/falscher Fehlertext. Aber diese Konstellation verwirrt mich. PS: Ich habe gerade nochmal nachgesehen; Es gibt tatsächlich nur ein Feld mit diesem Namen! :lol: Verwende Delphi 10.3.2 mit Devart UniDac 8.1.3. Vielen Dank schonmal für die Zeit und Hilfe! Liebe Grüße Incocnito |
AW: Column "xxx" specified more than once
Hallo,
ich würde Dir von der Nutzung der TTable-Komponenten abraten. Bau eine passende Query, dann siehst Du auch, was an die DB geht. PS: DevArt müsste auch eine TDBMonitor haben, dort kannst Du dir die geschickten Queries ansehen. |
AW: Column "xxx" specified more than once
Zitat:
Zitat:
Ich vermute, daß da soetwas wie
Code:
generiert wird.
update table1 set field1=x,set field2=y,set field1=z
(die genae Syntax ist natürlich von Deiner DB abhängig) Gruß K-H |
AW: Column "xxx" specified more than once
Probleme mit Großkleinschreibung rühren meist daher, dass im Table Create Script Hochkomma o.ä bei der Feldbenennung verwendet wurden.
Wo "findest Du die Felder in Kleinschrift"? Schau Dir als erstes das Create Script an. |
AW: Column "xxx" specified more than once
Nachtrag:
für Windows, Postgres 12, deutsch, Standardinstallation Konfiguration von Postgres anpassen, um bestimmte oder alle SQL Statements zu loggen: C:\Program Files\PostgreSQL\12\data\postgresql.conf Zeile:
Code:
Kommentarzeichen entfernen und Eintrag 'none' entsprechend der Auflistung / Bedarf anpassen.
..
#log_statement = 'none' # none, ddl, mod, all .. Z.B. 'mod' (Später wieder zurückstellen, sonst kann es schnell voll werden im System!)
Code:
stderr ist ein Defaulteintrag, der bedeutet, dass die tatsächlich verwendeten Logfiles in der folgenden Datei explizit zu finden sind (nicht nur ein Verzeichnis):
..
# - Where to Log - log_destination = 'stderr' .. C:\Program Files\PostgreSQL\12\data\current_logfiles Dabei wird jeweils das konkrete, aktuell verwendete Logfile mit Tagesdatum aufgeführt. Man landet in der Regel hier: C:\Program Files\PostgreSQL\12\data\log\ Die Logfiles enthalten im Fehlerfall sowieso bereits SQL Statement Text und der Loglevel muss nicht geändert werden. z.B.
Code:
hier sind die Logging Infos (verwendete Version beachten!):
..
2020-03-14 08:09:59.324 CET [5416] FEHLER: Spalte »t_id« existiert nicht bei Zeichen 8 2020-03-14 08:09:59.324 CET [5416] TIPP: Vielleicht wurde beabsichtigt, auf die Spalte »test.´t_id´« zu verweisen. 2020-03-14 08:09:59.324 CET [5416] ANWEISUNG: select t_id from test .. ![]() (btw: Postgres bietet schon seit langer Zeit diese vorbildliche, versionierte Doku) |
AW: Column "xxx" specified more than once
Danke erstmal für die ganzen Ideen/Einwürfe!
Zitat:
2) Ich soll in unserem Hauptprojekt die Datenbank ersetzen, dabei versuche ich so wenig Quelltext wie möglich zu ändern. Und da das bisher über Tabellen-Objekte lief, baue ich das so um, dass es ebenfalls wieder so läuft. ... Naja, das ist das Ziel! Zitat:
scheinbar, denn er speichert die SQL nur, wenn ich den Feldnamen kleingeschrieben habe. Schreibe ich das Feld groß, so zeigt er mit die erzeugte SQL nicht an. Zitat:
Zitat:
Ich habe das Log dann in der Windows-Ereignisanzeige gefunden:
Code:
Ich würde sagen, dass die Komponente da Mist baut, oder?
2020-03-16 12:05:46.541 CET [6356] ERROR: column "verfalldatum" specified more than once at character 151
2020-03-16 12:05:46.541 CET [6356] STATEMENT: INSERT INTO some_sheme.some_table (charge, pruefungsdatum, herstellungsdatum, lfdnr, pruefer, pzn, status, verfalldatum, verfalldatum, verfalldatum, verfalldatum) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) In Zusammenhang mit dem ersten Zitat würde ich aber trotzdem schauen, dass ich das ans Laufen bekomme. Das komplette Projekt auf Querys umzubauen wäre der Horror. Liebe Grüße an alle Incocnito |
AW: Column "xxx" specified more than once
Hallo,
hast du auf dem Form da irgendwelche datensensitiven Elemente (TDBGrid), wo Du Spalteneigenschaften angepasst hast (Displayformat oder sowas)? Such mal in der DFM nach den doppelten Spaltennamen. |
AW: Column "xxx" specified more than once
Die Komponente wird zur Laufzeit erstellt ohne Parent.
Diese wird dann auf dem Formular an mehreren Stellen benutzt. Erzeuge ich eine neue Komponente und arbeite darauf, dann geht's. Fehlersuche geht weiter ... |
AW: Column "xxx" specified more than once
Das klingt ganz leicht nach timing / initialisierungsfehler.
Aber ohne originalen Code ist es Raterei. |
AW: Column "xxx" specified more than once
Falls du nicht doch selber bei dir einen Fehler findest und ihr einen laufenden Vertrag bei DevArt habt, kann es sich lohnen, dort mal beim Support anzufragen. Ich hatte in den letzten Wochen zwei Probleme (eins lag letztlich an mir, eins war tatsächlich ein Bug in UniDac) und in beiden Fällen innerhalb weniger Stunden eine hilfreiche Antwort bekommen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:21 Uhr. |
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