MYSQL [USER TABLE修改带来错误]

时间:2013-04-14 11:25:05

标签: mysql syntax-error create-table

我正在尝试在网络旅游中学习一个简单的课程。 我试图修改为我的需求提供的代码。 它通过修改吐出错误:

  

#1064 - 您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在''id'附近使用正确的语法),UNIQUE KEY('email'),KEY('email','pass'))ENGINE = MYISAM DEFAULT'在第13行

ORIG代码:

CREATE TABLE `users` ( 
`id` int(11) NOT NULL auto_increment, 
`username` varchar(30) NOT NULL default '', 
`password` varchar(255) NOT NULL default '', 
`email` varchar(40) NOT NULL default '', 
`msn` varchar(250) NOT NULL default 'Not Specified', 
`aim` varchar(250) NOT NULL default 'Not Specified', 
`location` varchar(36) NOT NULL default 'Not Specified', 
PRIMARY KEY (`id`) 
) TYPE=MyISAM; 

我的编辑:

CREATE TABLE `users` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
type ENUM( 'member' , 'admin' ) NOT NULL ,
`username` varchar(30) NOT NULL default '',
`password` varchar(255) NOT NULL default '',
`first_name` varchar (15) NOT NULL,
`last_name` varchar (30) NOT NULL,
`gender` ENUM('male',  'female') NOT NULL default 'male',
`email` varchar(50) NOT NULL default '',
`skype` varchar(50) NOT NULL default 'Not Specified',
`facebook` varchar(150) NOT NULL default 'Not Specified',
`location` varchar(100) NOT NULL default 'Not Specified',
PRIMARY KEY ('id'),
UNIQUE KEY ('email'),
KEY ('email', 'pass')
) ENGINE = MYISAM DEFAULT CHARSET = utf8;

2 个答案:

答案 0 :(得分:2)

你正在混淆背蜱和报价。这是生活的一般规则:反向标记用于包含表结构(表名,表列,约束名等)。引号用于包含行 - 也就是说,输入到表中的实际数据。除非您指定默认的 ,否则不会在DDL语句中使用引号。

您的错误发生在您的对帐单中的主要,唯一和索引键上。

PRIMARY KEY ('id'),
UNIQUE KEY ('email'),
KEY ('email', 'pass')

应该(注意后面的滴答声):

PRIMARY KEY (`id`),
UNIQUE KEY (`email`),
KEY (`email`, `password`)

另请注意,您的索引是指不存在的列pass - 我已将其更改为正确的列password

答案 1 :(得分:1)

你厌恶反击

default '',

两个单引号为空字符串 BackTicks用于列名等,例如

  

My Strange column name