我试图执行以下sql查询。这给了error #1071。我把'varchar (300)'改成了'varchar (255)',把'MyISAM'改成了'InnoDB'。还是不起作用。我对MySQL不熟悉。
最后守则:
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 ;发布于 2014-02-12 07:38:04
查询没有什么问题。语法非常好。但是,根据MySQL中密钥长度的限制,您正在使用“provider”和“标识符”作为唯一键,这可能非常长。但是,您似乎使用的是过时的版本MySQL,因为当前版本支持高达3072字节的键大小。
一个解决办法是,您可以使用(例如)字段的前100个字符:
UNIQUE KEY `provider` (`provider`(100),`identifier`(100))而不是:
UNIQUE KEY `provider` (`provider`,`identifier`)https://stackoverflow.com/questions/21721409
复制相似问题