2013-04-14 93 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