Hallo allerseits.
Wir generieren aus einem Großrechnersystem heraus eine Datei, die auf den PC übertragen wird. Diese Datei ist auf dem PC eine simple ASCII-Textdatei. In diesem File sind mehrere Tausend SQL-Statements enthalten. Nun wollen wir diese Datei über die Kommandozeile an den mySQL-Server schicken und alle Statements zur Ausführung bringen.
Dies versuchen wir mittels
mysql --user=benutzer --pasword=pwd db_name < datei.txt
Hier gibt der mySQL-Server nun 2 Varianten von Fehlern aus. Zum ersten kann ein "ERROR 1136 at line 100 (Coloumn count doesn´t match value count)" auftauchen. Rein technisch ist dieser Fehler nicht möglich, da alle INSERTS (so auch das, bei dem dieser Fehler auftaucht) exakt identisch aufgebaut sind (sie kommen ja auch aus dem selben Programm). Wenn man nun einige wenige Zeilen vor der betroffenen Zeile 100 aus dem Textfile löscht, dann rutscht der Fehler (wie erwartet) weiter nach oben (also z.B. beim Löschen von 3 Zeilen von 100 auf 97). Soweit so gut. Wenn man nun aber z.B. 95 Zeilen vor der betroffenen Zeile 100 löscht, dann rauscht der mySQL-Server über die sagenhafte Zeile 100 (nun ja Zeile 5) drüber und bekommt viel später wieder einen ähnlichen Fehler und das SPiel beginnt von vorn.
Lustig ist auch, wenn ich die betroffene Zeile aus dem Textfile herauskopiere und z.B. im phpMyAdmin oder im mySQL-QueryBrowser ausführe, dann hat er NULL PROBLEMO.
Zweitens kann folgender Fehler auftreten: "ERROR 1064 at line 200: You have an error in your SQL syntax...". Hier stellt sich exakt das selbe Verhalten wie bei Variante 1 ein. Und auch hier kann ich die angeblich Fehlerhafte SQL-Anweisung im phpMyAdmin problemlos in die Datenbank schießen!
So jetzt hoffe ich, dass einer von euch dieses Problem kennt und lösen kann. Ich habe schon max-packet-size verändert und auch die aktuellste mySQL-Version (5.0.27) installiert. Ich bin mit meinem Latein am Ende und stochere buchstäblich im dichtesten Nebel.
Für jeden Tip bin ich dankbar.
Beste Grüße
Benni