2009-08-16 48 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` 
    ); 

创建数据库和复制粘贴的SQL查询到的phpMyAdmin后,我收到以下错误:这个MySQL查询中的索引定义有什么问题?

#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 

回答

1

你必须指定您希望的名称后括号中编入索引的列指数。

在你定义的底部:

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

将成为:

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

谢谢,这似乎工作。我真的需要学习MySQL ... – PHLAK 2009-08-18 05:36:39

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`) 
    ); 

索引需要的名字,因为他们是在数据库实体。