Halihallo Christl
Fehlermeldung? - Beispiel eines Queries, der (den|die) Fehler verursacht. Ich vermute,
dass ODBC entweder deine Eingabe nicht versteht (Syntax des Queries), oder dass MySQL
den Query (wiederum Syntax) nicht versteht.Hm, das exportierende Büro-/Lagerverwaltungsprogramm (BLVP) bringt einfach nur eine Zugriffsverletzung unter Adresse 0000000000... Kann man nix mit anfangen...
Oh, juhee...??? - Ich liebe Windows...
Also du hast ein fertiges System namens BLVP, welches über eine ADO-Datenquelle die
Daten in eine MySQL Datenbank exportiert? - Kannst du die Queries irgendwie ansehen,
die da getätigt werden? - Gibt's soeine Funktion wie Dump, welcher die Daten als
SQL-Statements in eine Datei auslagert?
Ich habe den MySQL-ODBC-Treiber unter Win2000 installiert, und öffne im BLVP unter "exportieren" die MySQL-Datenbank als ADO-Datenquelle. Bis dahin läuft alles. Ich kann auch exportieren, d.h. die Datensätze (über 25000) werden einfach hinten angehängt, das BLVP überschreibt die Datei einfach nicht.. (oder updatet auch nicht..)
Lässt sich BLVP nicht konfigurieren? - Das ist ja grausam. Ich denke mal, dass du dann
schlechte Karten hast, wenn du die Synchronisation/Export nicht beeinflussen kannst.
Da dieser Export auch ein bischen dauert (so 20 - 25 min) kann man in der Zeit ja auch nicht zugreifen...
Wieso nicht? - Verweigert dies ADO/ODBC?
Nun, dann zieh den Schleier aus und lies uns die Fehlermeldung vor.
Mit einem Schleier vor dem Haupt lässt sich bekanntlich schlecht Programmieren (es sei
denn der Computer liest dir alles vor)... :-)REPLACE tabelle_1 (Feld_1, Feld_2, Feld_3) SELECT Feld_1, Feld_2, Feld_3 FROM tabelle_2 ORDER BY Feld_1
Und was soll MySQL damit anfangen? - Das mag ODBC bzw. SQL konform sein, nicht jedoch
für den MySQL-SQL Dialekt.
Hab ich aber so ausm MySQL-Buch abgeschrieben... *schmoll*
Ein REPLACE ist kein UPDATE. REPLACE ist (fast) äquivalent zu DELETE und INSERT. Nun gut,
was hat das mit dir zu tun? - Ich glaube, dass du auf der Tabelle tabelle_1 keinen
Primary Key hast und dann kann MySQL keinen Update ausführen, sondern INSERTED einfach
alle Records. Definiere einen Primary Key auf dieser Tabelle und dir werden die Records
"updated", wobei du hier vorsichtig sein musst, wenn du AUTOINC-Spalten benutzt:
Die ID's wachsen mit jedem REPLACE (da es eben kein UPDATE, sondern ein DELETE+INSERT
ist.).
Hier bringt er zwar keine Fehlermeldung, und fürht das auch aus, aber MySQL fügt nur neue Datensätze hinten an... geänderte Datensätze existieren ja quasi schon (wenn auch noch nicht geändert), also lässt MySQL sie aus. (Denk ich mir so, obs auch so ist???)
Kann das vielleicht an der Syntax liegen, so wie Du gesagt hast?
In diesem Falle nein, es ist ein datenbanktechnisches Problem; MySQL braucht einen
Primary Key auf der Tabelle, um die Records unterscheiden zu können. Wie sonst soll
MySQL wissen, welcher Eintrag REPLACED werden soll?
Der Schleier ist soweit drunten, hoff ich.. ;-)
Bei mir war und ist er es, wie siehts bei dir jetzt aus?
Viele Grüsse
Philipp