![]() |
Datenbank: MYSQL • Version: 5 • Zugriff über: ZEOS (aktuelle Version)
ZEOS, MySQL und 'REPLACE INTO' wollen nicht zusammen
Hallo DP'ler!
Wieder ein Problem, das sicherlich irgendwie am fehlenden Verständnis für die ganze DB-Geschichte krankt! Ich blick da noch nicht ganz durch. Folgendes Szenario: zu Anfang: DB1: extern, Mysql, per
Delphi-Quellcode:
daten geholt, liegen unterhalb von
db1Qry.SQL:='SELECT * ...'
Delphi-Quellcode:
jetzt
db1DataSource.DataSet.xxx
DB2: lokal, Mysql, will per SQL-Statement
SQL-Code:
, was ich aus
Replace INTO db.tab (a,b,c) Values ('xx','xx','xx')
Delphi-Quellcode:
auslese und per Hand (also Schleife) als einen langen string zusammen baue. die Datenbank quasi updaten.
db1DataSource.DataSet.xxx
Nun sagt er mir aber bei der Ausführung, das angeblich ein fehler im Statemenst sein soll. Es sieht aber ganz sauber aus und ich habs auch schon herauskopiert und bspw. mit HeidiSQL getestet - Statement müßte sauber sein:
SQL-Code:
Woran kann das liegen? habe ich die lokale DB nicht richtig konstruiert? oder geht das garnicht mit einem normalen 'TZQuery'? Muss ich da irgendwas über 'TZUpdateSQL' etwas machen?
REPLACE INTO `db`.`tab` (`id`, `date`, `b`, `c`, `d`, `e`, `f`, `g`, `h`, `i`, `j`, `k`, `l`, `m`) VALUES (109752,'2009-06-22 08:15:00','17','89','13','4','2','358.48','0.050621','0','56','4.','0','0') ;
Grüße -C- |
Re: ZEOS, MySQL und 'REPLACE INTO' wollen nicht zusammen
Da ich von REPLACE noch nichts gehört hatte, hab ich mal nachgeschlagen:
Zitat:
|
Re: ZEOS, MySQL und 'REPLACE INTO' wollen nicht zusammen
Hallo Julius!
Ja, die Passage aus der MySQLHilfe hab ich auch schon entdeckt. Da liegt aber wohl nicht der Fehler. Ich habe nun herausgefunden, dass entweder die ZEOSLib nicht mit zusammenhängenden Statements a-la
SQL-Code:
zurecht kommt, oder aber ich hab etwas falsch gemacht beim auffüllen von
ALTER TABLE blablub ...;INSERT INTO blala ...; ALTER TABLE buhbuh...;
Delphi-Quellcode:
bzw. mit
Query.SQL.Text
Delphi-Quellcode:
wobei ich daran aber nicht glaube, da da ja eigentlich nix falsch zu machen ist. ich habe auch alle Statements brav mit ";" abgeschlossen. Half nix. Es wurde immer eine Exception geraised (schönes D-Englisch :lol: ).
Query.SQL.Add
Dabei half mir der ZSQLMonitor - kein schlechtes Ding zum debuggen. Ich habe die dann jeweils einzeln abgesetzt und dann ging es. Aber ich bin generell nicht zufrieden, da ich glaube, dass ich das alles etwas umständlich gemacht habe. Es geht ja prinzipiell darum, eine entfernte DB mit der localen zu synchronisieren. Dabei soll dann auch gleichzeitig noch in die entfernte eine Art Statusmeldung zurück gegeben werden. Diese ist allerdings recht simpel gehalten. Mir gehts eher um den Datenabgleich. Ich habe ja von dem ersten Query ein aufgefülltes TDataSource. Aber wie gesagt, aus dem bau ich dann quasi per Hand ein SQL-Statement, um damit die lokale DB zu befüllen. Das muss doch aber auch irgendwie anders gehen, oder? Gruß -C- |
Re: ZEOS, MySQL und 'REPLACE INTO' wollen nicht zusammen
Dann lasse dir das SQL-Statement mal anzeigen
|
Re: ZEOS, MySQL und 'REPLACE INTO' wollen nicht zusammen
@mkinzler:
hab ich ja gemacht. Ich hab's mir dann eins zu eins herauskopiert (Copy'n'Paste) und mit nem MySQL-Frontend als zusammenhängendes Statement ausgeführt - da ging es ohne Probleme. |
Re: ZEOS, MySQL und 'REPLACE INTO' wollen nicht zusammen
Vielleicht wird dieser Befehl vom (SQL-)Parser von Zeos halt noch nicht unterstützt
|
Re: ZEOS, MySQL und 'REPLACE INTO' wollen nicht zusammen
Hm, kann nicht sein, da ja die einzelne Abgabe der Statements klappt.
Ausserdem hab ich das einfach auch mit zwei "ALTER Table...;ALTER Table...;" versucht - hatte auch nicht geklappt. Vielleicht ist es ja ein stino Tipfehler Bug, der ja durchaus auch mal vorkommen kann. |
Re: ZEOS, MySQL und 'REPLACE INTO' wollen nicht zusammen
Ach das bezog sich auf das Skript. Dieses kannst du nicht mit einer normalen Query-Kompo ausführen. dafür gibt es TZSQLProcessor
|
Re: ZEOS, MySQL und 'REPLACE INTO' wollen nicht zusammen
SQL-Code:
Fehler: Tabellen- und Feldnamen dürfen in SQL/92 mit doppelten Anführungszeichen gequotet werden.
REPLACE INTO `db`.`tab` (`id`, `date`, `b`, `c`, `d`, `e`, `f`, `g`, `h`, `i`, `j`, `k`, `l`, `m`) VALUES (109752,'2009-06-22 08:15:00','17','89','13','4','2','358.48','0.050621','0','56','4.','0','0') ;
Du aber verwendest das Akzentzeichen (accent grave) `. Keine Ahnung warum das immer mal wieder falsch gemacht wird... |
Re: ZEOS, MySQL und 'REPLACE INTO' wollen nicht zusammen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 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 by Thomas Breitkreuz