mySQL FEhler
Sebastian
- datenbank
Hallo,
ich habe folgendes Skript (bin Anfänger):
CREATE TABLE user
(
id
TINYINT( 1 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
nick
VARCHAR( 30 ) UNSIGNED NOT NULL ,
register\_date
DATETIME UNSIGNED NOT NULL ,
level
TINYINT( 1 ) UNSIGNED NOT NULL ,
points
INT( 9 ) UNSIGNED NOT NULL ,
posts
INT( 6 ) UNSIGNED NOT NULL ,
nachname
VARCHAR( 30 ) UNSIGNED NOT NULL ,
name
VARCHAR( 30 ) UNSIGNED NOT NULL
) ENGINE = innodb
Und es kommt diese Fehlermeldung:
#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 'UNSIGNED NOT NULL, register\_date
DATETIME UNSIGNED NOT NULL, level
TINYINT(1' at line 1
Hab ich über phpmyadmin gemacht.
Weiß jemand, was falsch ist??
Danke!
echo $begrüßung;
nick
VARCHAR( 30 ) UNSIGNED NOT NULL ,
Weiß jemand, was falsch ist??
Eine Zeichenkette hat kein Vorzeichen. Das Attribut zum Angeben des Vorzeichens ist nur für Zahlentypen gültig.
echo "$verabschiedung $name";
Danke schonmal.
Das habe ich jetzt gemacht und unsigned auch gleich mal bei name und nachname weggemacht, aber es kommt in diesem Code:
CREATE TABLE user
(
id
TINYINT( 1 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
nick
VARCHAR( 30 ) NOT NULL ,
register\_date
DATETIME UNSIGNED NOT NULL ,
level
TINYINT( 1 ) UNSIGNED NOT NULL ,
points
INT( 9 ) UNSIGNED NOT NULL ,
posts
INT( 6 ) UNSIGNED NOT NULL ,
nachname
VARCHAR( 30 ) NOT NULL ,
name
VARCHAR( 30 ) NOT NULL
) ENGINE = innodb
Immer noch ein error:
#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 'UNSIGNED NOT NULL, level
TINYINT(1) UNSIGNED NOT NULL, points
INT(9) UNSIGNE' at line 1
echo $begrüßung;
Das habe ich jetzt gemacht und unsigned auch gleich mal bei name und nachname weggemacht, aber es kommt in diesem Code:
Na dann überleg nochmal weiter. Dazu ein kleiner Exkurs in die Arbeitsweise eines Parsers. Der liest einen Zeichenfolge, die einen Befehl darstellen soll. Jeder Befehl hat eine bestimmte Syntax. Wenn der Parser eine Abweichung findet beendet er sich und gibt eine Fehlermeldung. Hier liest er register\_date
, denkt: 'ah, ein Feldname', liest DATETIME, denkt: 'sehr schön, das ist der Feldtyp', liest UNSIGNED und stutzt: 'UNSIGNED? Für ein DATETIME-Feld? Ist nicht definiert.' und beendet sich mit der Meldung:
#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 'UNSIGNED NOT NULL,
level
TINYINT(1) UNSIGNED NOT NULL,points
INT(9) UNSIGNE' at line 1
Das ist also die Stelle, die nicht mehr stimmt. Um die Ursache zu ermitteln muss man zurückschauen. Man muss nachsehen, was vorher war und um daraus zu schlussfolgern (oder in der Syntax-Beschreibung nachzulesen), warum das Angemeckerte da nicht stehen darf.
echo "$verabschiedung $name";
Ok, vielen Dank! Hat geklappt:D
Sebastian