2016-03-23 8 views
1

Ich schreibe wie folgt zusammen:Was ist mein Syntaxfehler in dieser mySQL create table -Anweisung?

CREATE TABLE events (
`id` mediumint unsigned not null auto_increment, 
`user` varchar(30) not null, 
`time` datetime not null, 
`duration` decimal(5,2) default 1.0, 
`title` tinytext not null, 
`location` text default null, 
`tag` ENUM(‘red’,’orange’,’yellow’,’green’,’blue’,’violet’,’brown’,’black’) default null, 
PRIMARY KEY (`id`), 
FOREIGN KEY (`user`) references users (`username`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

und ich erhalte die folgende Antwort:

ERROR 1064 (42000): 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 '‘red’,’orange’,’yellow’,’green’,’blue’,’violet’,’brown' at line 8 

Dies kann ein Fall von müden Augen, aber ich bin ratlos. Was ist falsch mit meiner Enum-Aussage?

+0

Verwenden Sie Word nicht zum Erstellen von Abfragen. – Strawberry

+0

@Strawberry Ich verwendete Macs TextEdit, um sicherzustellen, dass das Dokument reiner Text und kein Rich Text war. –

+0

Nun, du hast intelligente Zitate von irgendwo! – Strawberry

Antwort

2

Wechsel:

`tag` ENUM(‘red’,’orange’,’yellow’,’green’,’blue’,’violet’,’brown’,’black’) 

An:

`tag` ENUM('red', 'orange','yellow','green','blue','violet','brown','black') 
+1

Erstaunlich. Ich dachte, ich würde verrückt werden, aber die einfachen Anführungszeichen, die in meinem Texteditor im Klartext verwendet werden, unterscheiden sich von den einfachen Anführungszeichen, die in der Befehlszeile geparst werden. –

2

Enclose Daten innerhalb ENUM von Single Quote

CREATE TABLE `events` (
`id` mediumint unsigned not null auto_increment, 
`user` varchar(30) not null, 
`time` datetime not null, 
`duration` decimal(5,2) default 1.0, 
`title` tinytext not null, 
`location` text default null, 
`tag` ENUM('red','orange','yellow','green','blue','violet','brown','black') default null, 
PRIMARY KEY (`id`), 
FOREIGN KEY (`user`) references users (`username`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

Hinweis:event ist ein MySQL reserviertes Schlüsselwort. Wenn Sie MySQL RESERVED KEYWORDS als Kennung verwenden, die von backtick eingeschlossen wird, wird empfohlen.

+0

Danke. Gute Anmerkung zu dem reservierten Keyword. –

+0

Ereignis ist kein reserviertes Schlüsselwort. – Strawberry

+0

Danke, vielleicht liege ich falsch. Aber was sollte der geeignete Begriff für "Ereignis" sein? [** hier **] (https://dev.mysql.com/doc/refman/5.5/en/keywords.html) Es wird gesagt, dass das Ereignis ein Schlüsselwort ist. @ Strawberry – 1000111

1

Problem ist mit den Anführungszeichen (‘red’) Sie verwendet für ENUM Werte dies versuchen;)

CREATE TABLE events (
`id` mediumint unsigned not null auto_increment, 
`user` varchar(30) not null, 
`time` datetime not null, 
`duration` decimal(5,2) default 1.0, 
`title` tinytext not null, 
`location` text default null, 
`tag` ENUM('red','orange','yellow','green','blue','violet','brown','black') default null, 
PRIMARY KEY (`id`), 
FOREIGN KEY (`user`) references users (`username`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

Und bevor diese Abfrage stellen Sie sicher, dass die Ausführung Benutzer Tabelle vorhanden ist und Spalte Benutzernamen haben;

0

Verwenden Apostroph in Enum anstelle von Backquote. Dieser arbeitete für mich:

CREATE TABLE events (`id` mediumint unsigned not null auto_increment, `user` varchar(30) not null, `time` datetime not null, `duration` decimal(5,2) default 1.0, `title` tinytext not null, `location` text default null, `tag` ENUM('red','orange','yellow','green','blue','violet','brown','black') default null, PRIMARY KEY (`id`), FOREIGN KEY (`user`) references users (`username`)) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
0

ändern

`tag` ENUM(‘red’,’orange’,’yellow’,’green’,’blue’,’violet’,’brown’,’black’) 

Um

`tag` ENUM('red','orange','yellow','green','blue','violet','brown','black') 

Use '' bei ‚‘.

Verwandte Themen