2009-08-16 11 views
0
CREATE TABLE `pastebin` (
     `pid` int(11) NOT NULL auto_increment, 
     `poster` varchar(16) default NULL, 
     `posted` datetime default NULL, 
     `code` text, 
     `parent_pid` int(11) default '0', 
     `format` varchar(16) default NULL, 
     `codefmt` mediumtext, 
     `codecss` text, 
     `domain` varchar(255) default '', 
     `expires` DATETIME, 
     `expiry_flag` ENUM('d','m', 'f') NOT NULL DEFAULT 'm', 

     PRIMARY KEY (`pid`), 
     KEY `domain` (`domain`), 
     KEY `parent_pid`, 
     KEY `expires` 
    ); 

Nach einer Datenbank und kopier Einfügen der SQL-Abfrage in phpMyAdmin Erstellen bekomme ich folgende Fehlermeldung:Was ist falsch an dieser Indexdefinition in dieser MySQL-Abfrage?

#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 ' 
    KEY `expires` 
)' at line 16 

Antwort

1

Sie haben die Spalten angeben, die in Klammern nach dem Namen der indexierten haben wollen Index.

Am unteren Rand Ihrer Definition:

PRIMARY KEY (`pid`), 
    KEY `domain` (`domain`), 
    KEY `parent_pid`, 
    KEY `expires` 

werden würde:

PRIMARY KEY (`pid`), 
    KEY `domain` (`domain`), 
    KEY `parent_pid` (`parent_pid`), 
    KEY `expires` (`expires`) 
+0

Danke, das schien zu funktionieren. Ich muss wirklich MySQL lernen ... – PHLAK

1
CREATE TABLE `pastebin` (
     `pid` int(11) NOT NULL auto_increment, 
     `poster` varchar(16) default NULL, 
     `posted` datetime default NULL, 
     `code` text, 
     `parent_pid` int(11) default '0', 
     `format` varchar(16) default NULL, 
     `codefmt` mediumtext, 
     `codecss` text, 
     `domain` varchar(255) default '', 
     `expires` DATETIME, 
     `expiry_flag` ENUM('d','m', 'f') NOT NULL DEFAULT 'm', 

     PRIMARY KEY (`pid`), 
     KEY `domain` (`domain`), 
     KEY `parent_pid` (`parent_pid`), 
     KEY `expires` (`expires`) 
    ); 

Indizes müssen Namen, da sie Einheiten in der DB sind.

Verwandte Themen