Sebastian: mySQL FEhler

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!

  1. 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";

    1. 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

      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";

        1. Ok, vielen Dank! Hat geklappt:D

          Sebastian