2016-08-09 47 views
1

Ich versuche einige Tabellen in PHPMyAdmin einzurichten und habe diese Anweisung verwendet; Warum verursacht es einen Fehler und wird nicht akzeptiert? Ich kann keine offensichtlichen Syntaxprobleme sehen, daher bin ich mir nicht sicher, was das Problem sein könnte. Der erzeugte Fehler ist mit # 1064 gekennzeichnet.Warum erhalte ich einen SQL-Fehler mit dieser Anweisung?

CREATE TABLE 'users' (
    'id' INT NOT NULL AUTO_INCREMENT, 
    'username' VARCHAR(45) NOT NULL, 
    'password' VARCHAR(45) NOT NULL, 
    'email' VARCHAR(45) NOT NULL, 
    'dob' DATE NOT NULL, 
    'image_url' VARCHAR(45) NOT NULL, 
    'name' CHAR NOT NULL, 
    'email_private' TINYINT NOT NULL, 
    PRIMARY KEY ('id') 
); 


CREATE TABLE 'comments' (
    'id' INT NOT NULL AUTO_INCREMENT, 
    'comment' VARCHAR(140) NOT NULL, 
    'receiver_id' INT NOT NULL, 
    PRIMARY KEY ('id'), 
    CONSTRAINT 'receiver_id' 
    FOREIGN KEY ('receiver_id') 
    REFERENCES 'users' ('id') 
); 
+2

Ihre Spalte und Tabellennamen mit Graviszeichen Flucht '\' '. – Blank

+0

# 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe von "Benutzer" entspricht ( 'id' INT NOT NULL AUTO_INCREMENT, 'Benutzername' VARCHAR (45) NOT NUL 'in Zeile 1 – iamjawa

Antwort

1

Weil Sie MySQL Reserved Words verwenden, ist die Art und Weise, sie zu entkommen, indem sie Backticks `mit:

CREATE TABLE 'users' (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `username` VARCHAR(45) NOT NULL, 
    `password` VARCHAR(45) NOT NULL, 
    `email` VARCHAR(45) NOT NULL, 
    `dob` DATE NOT NULL, 
    `image_url` VARCHAR(45) NOT NULL, 
    `name` CHAR NOT NULL, 
    `email_private` TINYINT NOT NULL, 
    PRIMARY KEY (`id`) 
); 
0

Sie nicht ' in Spaltennamen verwenden sollten, wenn Sie verwenden möchten, nutzen Sie bitte` statt '.
Inhalt in ' bedeutet es ein String ist, ' immer für Spaltenwert Name nicht für Spalte verwendet werden