SQL Syntax Fehler CREATE TABLE, VARCHAR?

4 Antworten

varchar mit einer Länge von 4 ist nonsens. Bei varchar kommt es darauf an, bei langen Textfeldern, die nur selten die volle Länge benötigen, Platz zu sparen. Da dabei intern noch ein Längenfeld und organisatorischer Aufwand erforderlich ist, ist das Feld insgesamt in diesem Fall länger statt kürzer gegenüber char. Der Zweck wird völlig verfehlt. Ich vermute mal, dass es für den varchar eine Mindestgröße gibt. Jedenfalls wäre das sinnvoll. Dass der Fehler, wie Du vermutest, am DOUBLE lag, glaube ich nicht. Es gab da auch keine Fehlermeldung dazu.

Die nachkommastellen fehlen

Z.B. DOUBLE(4,4)

Und ich bin mir Grade nicht sicher ob es DOUBLE überhaupt gibt, ansonst FLOAT oder DOUBLE PRECISION

Anstatt varchar 600 würde ich Text nehmen

skoobidoo15 
Fragesteller
 01.02.2018, 13:15

danke, es hat wirklich daran gelegen, dass ich bei double nur eine zahl geschrieben habe, jetzt funktionierts. habe varchar auch auf 255 gesetzt

1
Kiboman  01.02.2018, 16:25
@skoobidoo15

PS wenn ein Syntaxfehler Auftritt:

Wie hier in Zeile 5,

liegt der Fehler meistens in der Zeile vorher (wie hier)

0
wotan38  02.02.2018, 12:09

Bei einer Länge von 600 drängt sich varchar geradezu auf. Denn es erscheint unwahrscheinlich, dass dieses Feld immer in voller Länge benötigt wird. Als Tipp ist das auf jedenfall falsch. Außer, Du wüsstest konkret, dass da immer der Platz voll genutzt wird. Möglich wäre das schon.

0

Liegt vielleicht nur an der Darstellung aber der Create Table Befehl braucht ein Semikolon am Ende der Klammer:

CREATE TABLE Produkt (

...

);

skoobidoo15 
Fragesteller
 01.02.2018, 13:17

das Semikolon ist da, das wird hier bei der Fehlermeldung in MySQL nur nicht dargestellt, ist mir auch schon aufgefallen :)

1

DOUBLE erwartet zwei Parameter, nicht nur einen. Vermutlich wäre DECIMAL für den Preis auch die bessere Wahl.

Davon abgesehen macht VARCHAR(600) auch keinen Sinn.

skoobidoo15 
Fragesteller
 01.02.2018, 13:16

habe statt double decimal verwendet jetzt für den preis, aber warum nicht double in dem Fall?

0