PHPMyAdmin中的SQL查询未执行显示错误#1071

时间:2014-02-12 07:31:25

标签: mysql sql mysqli

我试图执行以下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 ;

提前致谢。

1 个答案:

答案 0 :(得分:1)

查询没有任何问题。语法非常好。 但是,根据MySQL中密钥长度的限制,您使用'provider'和'identifier'作为唯一密钥,这些密钥可能很长。但是,您似乎使用的是过时的MySQL版本,因为当前版本支持的密钥大小最多为3072字节。

一种解决方法是您可以使用(比如说)前100个字段的字符:

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

而不是:

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