2012-02-27 127 views
1
CREATE TABLE `users` (

`id` INT UNSIGNED NOT NULL AUTO_INCREMENT , 
`type` ENUM( `member` , `admin`) NOT NULL , 
`username` VARCHAR(30) NOT NULL , 
`email` VARCHAR(80) NOT NULL , 
`pass` VARBINARY(32) NOT NULL , 
`first_name` VARCHAR(20) NOT NULL , 
`last_name` VARCHAR(40) NOT NULL , 
`date_expires` DATE NOT NULL , 
`date_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , 
`date_modified` TIMESTAMP NOT NULL DEFAULT `0000-00-00 00:00:00` , 
PRIMARY KEY ( `id`) , 
UNIQUE KEY `username` ( `username`) , 
UNIQUE KEY `email` ( `email`) 
) ENGINE = MYISAM DEFAULT CHARSET = utf8; 

MySQL表示:SQL语法错误

#1064 - 你在你的SQL语法错误;检查对应于你的MySQL服务器版本正确的语法使用 附近 'memberadmin)NOT NULL,username VARCHAR(30)NOT NULL), email VARCHAR(80' 手动在行3

我使用的共享服务器使用4.4。谢谢阅读。我是一个绝对的新手,一个月只学习php/mysql,所以请用外行人的话说。

+0

不要使用标记(如''
)发布时。请使用编辑工具栏中的代码部分切换。 – 2012-02-27 16:36:38

+0

看起来你过度补偿了最后一期。 – 2012-02-27 16:38:35

+0

@Paul Bellora:这就是SO的格式化,被#字符搞糊涂了 – Mchl 2012-02-27 16:40:23

回答

5

需要引用枚举值

type ENUM('member' , 'admin') NOT NULL , 

,你这行现在做

同样的事情不会BACKTICK他们

`date_modified` TIMESTAMP NOT NULL DEFAULT `0000-00-00 00:00:00` 

应该

`date_modified` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' 
+0

谢谢你@Anthony Grist&@Mchl。这可能是一个令人难以置信的愚蠢问题,但为什么在这里使用“而不是”呢? – 2012-02-27 16:43:48

+0

由于反引号'用于表示数据库对象,如表和列,''用于分隔字符串值。 – Mchl 2012-02-27 17:20:21

+0

@Matthew:请阅读手册;有关此信息的所有信息(http://dev.mysql.com/doc/refman/5.0/en/string-literals.html&http://dev.mysql.com/doc/refman/5.0/en/identifiers的.html)。 – 2012-03-01 19:18:35

1

This页表明你的ENUM值应该是字符串,所以需要用单引号括起来。

type ENUM('member' , 'admin') NOT NULL 
0

好固定在这里是吧:)

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`, `password`) 
) ENGINE = MYISAM DEFAULT CHARSET = utf8;