2013-04-14 35 views
0

我想在web游客中遵循一个简单的课程。 我试图修改为我的需求给出的代码。 它吐出修改错误:MYSQL [用户表修改带来错误]

#1064-你的SQL语法错误;请检查与您的MySQL服务器版本相对应的手册,以便在''id'附近使用),UNIQUE KEY('email'),KEY('email','pass'))ENGINE = MYISAM DEFAULT'

弊CODE:

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; 

MY编辑:

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; 

回答

1

你疯了与反引号

default '', 

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

My Strange column name

+0

已编辑。请再次查看描述! –

+0

因此,您将反引号固定在默认值的周围,但您现在在@Perception中提到的单引号字段名称不是您的密钥。字符串是单引号,对象(列,表等)反引号。 –

+0

它是固定的TY! –

2

你混合了反单引号和报价。这是生活的一般规则:back-ticks用于包含表结构(表名,表列,约束名称等)。引号用于包含行 - 又名,即输入到表中的实际数据。除非您指定默认值,否则不会在DDL语句中使用引号。

您的错误出现在您的声明中的主键,唯一键和索引键上。

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

应为(注意反单引号):

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

还请注意,你的指数是指一个不存在的列pass - 我把它改成正确的列password