AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Column "xxx" specified more than once

Column "xxx" specified more than once

Ein Thema von Incocnito · begonnen am 13. Mär 2020 · letzter Beitrag vom 17. Apr 2020
Antwort Antwort
Seite 1 von 2  1 2   
Incocnito

Registriert seit: 28. Nov 2016
210 Beiträge
 
#1

Column "xxx" specified more than once

  Alt 13. Mär 2020, 16:33
Datenbank: postgres • Version: 10.4 • Zugriff über: unidac
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
APFAMPRU_SQL['Verfalldatum'] := DateAsNull(edVerfall.Date); auf
APFAMPRU_SQL['verfalldatum'] := DateAsNull(edVerfall.Date); (also mit kleinem "V") dann geht es.
Die Zeile
APFAMPRU_SQL['Status'] := nStatus; stört ihn hierbei also von der Groß-/Kleinschreibung nicht!

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!

Verwende Delphi 10.3.2 mit Devart UniDac 8.1.3.

Vielen Dank schonmal für die Zeit und Hilfe!

Liebe Grüße
Incocnito
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Column "xxx" specified more than once

  Alt 13. Mär 2020, 18:09
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.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Column "xxx" specified more than once

  Alt 13. Mär 2020, 18:51
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.

ich führe gerade eine Append auf eine Tabelle aus und er behauptet
"Column 'xxx' specified more than once".
Wer bitte produziert denn diese Meldung? Meist gibt es drei Verdächtige: die DB,der Treiber,die Komponente.
Ich vermute, daß da soetwas wie
Code:
update table1 set field1=x,set field2=y,set field1=z
generiert wird.
(die genae Syntax ist natürlich von Deiner DB abhängig)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: Column "xxx" specified more than once

  Alt 14. Mär 2020, 09:19
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.
Gruß, Jo
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: Column "xxx" specified more than once

  Alt 14. Mär 2020, 10:36
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:
..
#log_statement = 'none'         # none, ddl, mod, all
..
Kommentarzeichen entfernen und Eintrag 'none' entsprechend der Auflistung / Bedarf anpassen.
Z.B. 'mod'
(Später wieder zurückstellen, sonst kann es schnell voll werden im System!)

Code:
..
# - Where to Log -
log_destination = 'stderr'
..
stderr ist ein Defaulteintrag, der bedeutet, dass die tatsächlich verwendeten Logfiles in der folgenden Datei explizit zu finden sind (nicht nur ein Verzeichnis):
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:
..
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
..
hier sind die Logging Infos (verwendete Version beachten!):
https://www.postgresql.org/docs/curr...g-logging.html
(btw: Postgres bietet schon seit langer Zeit diese vorbildliche, versionierte Doku)
Gruß, Jo
  Mit Zitat antworten Zitat
Incocnito

Registriert seit: 28. Nov 2016
210 Beiträge
 
#6

AW: Column "xxx" specified more than once

  Alt 16. Mär 2020, 11:44
Danke erstmal für die ganzen Ideen/Einwürfe!

... ich würde Dir von der Nutzung der TTable-Komponenten abraten. ...
1) Aus was für einem Grund? Dafür ist die doch entwickelt worden!
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!

...
DevArt müsste auch eine TDBMonitor haben, dort kannst Du dir die geschickten Queries ansehen.
Ja tatsächlich! Danke für den Tipp! Allerdings ignoriert er die Einstellung "BeforeEvent"
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.

Probleme mit Großkleinschreibung rühren meist daher, dass im Table Create Script Hochkomma o.ä bei der Feldbenennung verwendet wurden. ...
Im PgAdmin habe ich mir einfach mal mit "Select * from" alles ausgegeben und dort sind die Felder alle kleingeschrieben. Ich kann also davon ausgehen, dass das Create-Script die Feldnamen alle wandelt oder dass der PG-Server dies nachholt.

...
Konfiguration von Postgres anpassen, um bestimmte oder alle SQL Statements zu loggen:
C:\Program Files\PostgreSQL\12\data\postgresql.conf
Zeile:
Code:
..
#log_statement = 'none'         # none, ddl, mod, all
..
Kommentarzeichen entfernen und Eintrag 'none' entsprechend der Auflistung / Bedarf anpassen.
Z.B. 'mod'
(Später wieder zurückstellen, sonst kann es schnell voll werden im System!)

Code:
..
# - Where to Log -
log_destination = 'stderr'
..
...
Man landet in der Regel hier:
C:\Program Files\PostgreSQL\12\data\log\
...
hier sind die Logging Infos (verwendete Version beachten!):
https://www.postgresql.org/docs/curr...g-logging.html
(btw: Postgres bietet schon seit langer Zeit diese vorbildliche, versionierte Doku)
Ich hab' mir das mit den Logs mal angesehen, aber ich bekomme das so auf die schnelle nicht zum laufen. Wie du aber schon richtig geschrieben hattest werden Fehler eh geloggt.
Ich habe das Log dann in der Windows-Ereignisanzeige gefunden:
Code:
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)
Ich würde sagen, dass die Komponente da Mist baut, oder?
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
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Column "xxx" specified more than once

  Alt 16. Mär 2020, 15:23
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.
Heiko
  Mit Zitat antworten Zitat
Incocnito

Registriert seit: 28. Nov 2016
210 Beiträge
 
#8

AW: Column "xxx" specified more than once

  Alt 16. Mär 2020, 15:36
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 ...
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#9

AW: Column "xxx" specified more than once

  Alt 16. Mär 2020, 16:54
Das klingt ganz leicht nach timing / initialisierungsfehler.

Aber ohne originalen Code ist es Raterei.
Gruß, Jo
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
648 Beiträge
 
Delphi 12 Athens
 
#10

AW: Column "xxx" specified more than once

  Alt 16. Mär 2020, 17:14
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.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz