MySQL Syntax-Error

D-Jay

Registered User
Kann mir jemand sagen was ich da übersehen habe?
Liegt es an der neuen Version 5?



SQL-DATABASE ERROR

Database error in WoltLab Burning Board (): Invalid SQL: INSERT INTO bb1_acpmenuitems (itemid,itemgroupid,link,languageitem,linkformat,condition,conditiontype,showorder,acpmode) VALUES ('','17','ads.php','ADS','%s','a_can_otherstuff_ads','OR','4','2')
mysql error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'condition,conditiontype,showorder,acpmode) VALUES ('','17','ads.php','ADS','%' at line 1
mysql error number: 1064
mysql version: 5.0.18-nt
php version: 5.1.2
Date: 22.02.2006 @ 20:43
 
Ja definitiv!
Das Problem hatte ich beim Einlesen eines WBB Backups auch schon...aber jetzt frag mich nicht wie ichs gefixt hab :(

Ich glaube dieser Fehler tritt schon auf bei:
MySQL 4.0.xx auf MySQL 4.1.xx
 
Achso, sorry, mein Fehler sieht so aus:

Kunden mit den höchsten Umsätzen
XT Statistics

Nr. Kunden Umsatz Gesamt
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-20, 20' at line 1

select c.customers_firstname, c.customers_lastname, sum(op.final_price) as ordersum from customers c, orders_products op, orders o where c.customers_id = o.customers_id and o.orders_id = op.orders_id group by c.customers_firstname, c.customers_lastname order by ordersum DESC limit -20, 20

[XT SQL Error]
 
Es steht doch da!

Einmal zum Vorkauen:
tkmc said:
check the manual [...] for the right syntax to use near '-20, 20' at line 1
In Deiner Zeile 1 stimmt was an der Stelle '-20, 20' nicht.
Wenn man die Stelle sucht, findet man:
limit -20, 20
Wenn man in der MySQL-Doku nach 'limit' schaut, sieht man, daß Limit keinen negativen Startwert zuläßt.

Da dieser Fehler offensichtlich aus irgendeiner Anwendung kommt, habe ich keine Ahnung wo und wie Du ihn beheben kannst.

huschi.
 
Ich hatte dieses Problem auch und habe dann, anstatt die Datenbank an der Konsole einzuspielen, mit dem Mysql Dumper zuerst auf dem alten Server gesichert und dann auf dem neuen ebenso mit Mysql Dumper wieder eingespielt.

Läuft einwandfrei.

Ist natürlich aufwendiger. Habe den Dumper jeweils auf dem alten und auf dem neuen Server installiert.

Das erstellte Backup dann aus dem Verzeichnis /work/backup per FTP auf den lokalen Rechner laden, auf den neuen Server in das gleichnamige Verzeichnis wieder hochladen und mit dem Dumper einspielen.

http://mysqldumper.de
 
Auch wenn der Thread schon älter ist - er wird ja trotzdem über die Suche gefunden.
Das Problem hier ist:
Kann mir jemand sagen was ich da übersehen habe?
Liegt es an der neuen Version 5?

Invalid SQL: INSERT INTO bb1_acpmenuitems (itemid,itemgroupid,link,languageitem,linkformat,condition,conditiontype,showorder,acpmode) VALUES ...
mysql error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'condition,conditiontype,showorder,acpmode) VALUES
,dass das Wort condition in den neueren MySQL-Versionen ein reserviertes MySQL-Befehlswort ist und so nicht als Spaltenname verwendet werden darf.
Die Software, die das Backup angelegt hat, hätte das Wort von Backticks umschlossen abspeichern müssen.
So hätte es geklappt:
INSERT INTO bb1_acpmenuitems (itemid,itemgroupid,link,languageitem,linkformat,`condition`,conditiontype,showorder,acpmode) VALUES ...
Das ist also eine Schwäche der Routine, die das Backup erstellt hat.
Die Programme, die das Backup wieder einspielen sollen, extrahieren die Befehlszeilen so aus der Datei, wie sie vorliegen und nehmen keine Syntaxprüfung vor, sondern leiten den Befehl direkt an den MySQL-Server weiter.

Ich empfehle daher zum Anlegen von Backups MySQLDumper.
Der macht das nämlich richtig. ;)
 
Back
Top