MySQL Error in SQL syntax

  • Themenstarter Themenstarter mickedplay
  • Beginndatum Beginndatum
M

mickedplay

Gast
Mal ne Frage, auch wenn ich da irgendwann selber drauf kommen könnte.
Die folgenden zwei Befehle werden nicht ausgeführt, da ein Syntax-Fehler besteht. Die letzten beiden (und auch die Mehrheit) funktionieren jedoch einwandfrei. Es sind alles zufallsgenerierte Namen. Hab ich was übersehen?
Code:
CREATE TABLE IF NOT EXISTS deeemoqsbu9l(
    id INTEGER UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
    3e8qp TEXT, Jvpy0 TEXT, hXt5u TEXT,
    ENiMf TEXT, SMDQt TEXT, dkmIg TEXT,
    IsiN6 TEXT, Q58rc TEXT, EhVwq TEXT,
    IxLhc TEXT
) DEFAULT CHARSET = utf8 COLLATE = utf8_general_ci

## FEHLER IN ZEILE 3 ##
Code:
CREATE TABLE IF NOT EXISTS xrtj3hiufxu7(
    id INTEGER UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
    UaXOO TEXT, IeLeG TEXT, 6YST7 TEXT,
    oe9lX TEXT, FsV27 TEXT, ZtRp9 TEXT,
    POlPP TEXT, 54E7L TEXT, QkMWe TEXT,
    KRKjM TEXT
) DEFAULT CHARSET = utf8 COLLATE = utf8_general_ci

## FEHLER IN ZEILE 5 ##

Diese beiden hier jedoch funktionieren ohne Probleme:
Code:
CREATE TABLE IF NOT EXISTS mvjng0vhkgyw(
    id INTEGER UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
    Ba7Fz TEXT, WOLxq TEXT, WMuQZ TEXT,
    vIq93 TEXT, uli3C TEXT, ZvoxN TEXT,
    gcoJd TEXT, dDTFD TEXT, fdWvX TEXT,
    KIgQm TEXT
) DEFAULT CHARSET = utf8 COLLATE = utf8_general_ci
Code:
CREATE TABLE IF NOT EXISTS 827wuqcw4dfe(
    id INTEGER UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
    zzV71 TEXT, iQeZg TEXT, 6yVz2 TEXT,
    1gnpx TEXT, gYEPF TEXT, x6WIc TEXT,
    ihJ7I TEXT, w1MrD TEXT, DusHk TEXT,
    feXFi TEXT
) DEFAULT CHARSET = utf8 COLLATE = utf8_general_ci
 
Hääää? Ein "ganz normaler Syntax-Fehler" geht weiter mit "Check the manual of your corresponding server version for the syntax to use near ...". Das wäre der interessante Teil. Ich habe an meinem privaten Rechner gerade keine MySQL Datenbank laufen und ich werde mir jetzt hierfür auch keine installieren.

Wenn du ne lösung willst kanns du ja mal die Fehlermeldung posten, mal sehen ob dir dann jemand hilft. Cheers.

EDIT:
Siehe http://www.java-forum.org/thema/wie-man-fragen-richtig-stellt.7407/ Punkt 2.6
 
Verstehe nicht, wozu Du die brauchst. Es ist ein ganz normaler Syntaxfehler...
Das ist wirklich zu komisch. Wozu sollte man bei der Fehlersuche eine Fehlermeldung gebrauchen können?😀

Habe es mal ausprobuert. Die Meldung lautet wie folgt:
Code:
Error Code: 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 '54E7L TEXT, QkMWe TEXT,     KRKjM TEXT ) DEFAULT CHARSET = utf8 COLLATE = utf8_g' at line 5
Man sieht also sofort, dass das Problem durch den Spaltennamen 54E7L verursacht wird, der mit einer Ziffer beginnt. Das ist tatsächlich etwas seltsam, weil die Spalte 6YST7 akzeptiert wird. Mit folgenden Befehl könnte man die Tabelle auch mit dem Spaltennamen 54E7L erstellen, was nicht heissen soll, dass das eine gute Idee wäre:
Code:
CREATE TABLE IF NOT EXISTS xrtj3hiufxu7(
    id INTEGER UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
    UaXOO TEXT, IeLeG TEXT, 6YST7 TEXT,
    oe9lX TEXT, FsV27 TEXT, ZtRp9 TEXT,
    POlPP TEXT, `54E7L` TEXT, QkMWe TEXT,
    KRKjM TEXT
) DEFAULT CHARSET = utf8 COLLATE = utf8_general_ci
 
Hääää? Ein "ganz normaler Syntax-Fehler" geht weiter mit "Check the manual of your corresponding server version for the syntax to use near ...". Das wäre der interessante Teil. Ich habe an meinem privaten Rechner gerade keine MySQL Datenbank laufen und ich werde mir jetzt hierfür auch keine installieren.

Wenn du ne lösung willst kanns du ja mal die Fehlermeldung posten, mal sehen ob dir dann jemand hilft. Cheers.

EDIT:
Siehe http://www.java-forum.org/thema/wie-man-fragen-richtig-stellt.7407/ Punkt 2.6
Ich hab extra die Fehlerzeilei Code mit reingeschrieben...
Und es wäre Punk 1.6^^

Dann fix ihn doch selber...
Das ist aber nicht sehr hilfreich.^^

Wahrscheinlich werden die Spaltennamen nicht akzeptiert, weil ein e zwischen zwei Ziffern liegt und der Parser deshalb von Exponentialschreibweise ausgeht. Der Befehlselect 1e3liefert beispielsweise 1000 zurück.
Sauber, danke. 🙂
 
Ich hab extra die Fehlerzeilei Code mit reingeschrieben...
Es kann aber schon ein großer Unterschied sein, ob man weiß, dass irgendein Fehler in Zeile 3 existiert, oder ob man weiß, welche Art von Fehler an einer exakt benannten Position auftritt. Außerdem kennt man einfach gerne den genauen Wortlaut, damit man besser abschätzen kann, ob der Fragesteller vielleicht bei der Fehlerbeschreibung etwas falsch gemacht hat, oder auch nur, um es bei einer Google-Suche einzubeziehen.
Und es wäre Punk 1.6^^
Das habe ich leider nicht verstanden.
 
[OFFTOPIC]
Ganz ehrlich, ich finde es sehr, sehr schade, dass der TE hier eine Lösung bekommen hat, ohne die Fehlermeldung zu posten. Von den helfenden ist hier niemand in der Bringschuld aber der TE benimmt sich auf arrogante Weise so, als ob wir seinen Fehler fixen müssten und gefälligst selbst alles mögliche dafür tun sollen. Das finde ich hochgradig unverschämt und respektlos.
Ja, einen MySQL Server zu starten und die Queries abzuschicken dauert keine 5 Minuten. Mir geht es ums Prinzip. Was bringen wir denn den Forennutzern bei wenn man selbst bei einem derartigen Betragen Hilfe bekommt... offensichtlich fehlen dem TE mal wieder Basics (*ähem* Backtick *ähem*)....
[/OFFTOPIC]
 
Ich hatte tatsächlich erwogen, keine Lösung zu schicken, sondern nur zu antworten, dass ich die Lösung anhand der Fehlermeldung leicht finden konnte. Habe auch schon bei vielen Threads gedacht, dass man zu viel geholfen hat. Ich fand dann aber das eigentliche Phänomen, das ich nicht sofort verstanden habe, ganz allgemein interessant genug, um die Lösung trotzdem zu posten.
 

Zurück
Oben