2014-02-12 49 views
0

我試圖執行下面的sql查詢。其中給出error #1071。我已將'varchar (300)'更改爲'varchar (255)''MyISAM'更改爲'InnoDB'。還是行不通。我不熟悉MySQL。PHPMyAdmin中的SQL查詢不執行顯示錯誤#1071

終極密碼:

CREATE TABLE IF NOT EXISTS `nwjhmu_users_oauth` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `user_id` int(11) NOT NULL, 
    `provider` varchar(100) NOT NULL, 
    `identifier` varchar(255) NOT NULL, 
    `email` varchar(200) NOT NULL, 
    `displayName` varchar(150) NOT NULL, 
    `firstName` varchar(100) NOT NULL, 
    `lastName` varchar(100) NOT NULL, 
    `profileURL` varchar(255) NOT NULL, 
    `photoURL` varchar(255) NOT NULL, 
    `webSiteURL` varchar(255) NOT NULL, 
    `description` varchar(255) NOT NULL, 
    `gender` varchar(10) NOT NULL, 
    `language` varchar(10) NOT NULL, 
    `age` tinyint(3) unsigned NOT NULL, 
    `birthDay` tinyint(3) unsigned NOT NULL, 
    `birthMonth` tinyint(3) unsigned NOT NULL, 
    `birthYear` int(10) unsigned NOT NULL, 
    `country` varchar(50) NOT NULL, 
    `region` varchar(50) NOT NULL, 
    `city` varchar(50) NOT NULL, 
    `zip` varchar(20) NOT NULL, 
    `registerDate` datetime NOT NULL, 
    `modified` datetime NOT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `provider` (`provider`,`identifier`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 

在此先感謝。

+0

而是希望我們通過數字來了解所有的錯誤代碼,你能提供實際的錯誤文字嗎?這通常會給出一些關於這個問題的好的提示:) – oerkelens

+1

適合我[** sql小提琴**](http://sqlfiddle.com/#!2/079cc0) –

回答

1

查詢沒有問題。語法非常好。 但是,根據MySQL密鑰長度的限制,您使用'provider'和'identifier'作爲唯一的密鑰,這可能會很長。但是,似乎您正在使用過時的MySQL版本,因爲當前版本支持的密鑰大小可達3072字節。

一種解決方法可以是您可以使用(比方說)第100個字符的字段:中

UNIQUE KEY `provider` (`provider`(100),`identifier`(100)) 

代替:

UNIQUE KEY `provider` (`provider`,`identifier`) 
+0

oh no頁面未找到 –

+1

更正的鏈接。 – Bhoot

+0

感謝Bhoot爲您的答案。 – user3300444