我试图执行以下 sql 查询。这给出了错误#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 ;
最佳答案
查询没有任何问题。语法完全没问题。 但是,您使用“provider”和“identifier”作为唯一键,根据 MySQL 中键长度的限制,它们可能会很长。但是,您似乎使用的是过时版本的 MySQL,因为当前版本支持最大 3072 字节的 key 大小。
一种解决方法是您可以使用(例如)字段的前 100 个字符:
UNIQUE KEY `provider` (`provider`(100),`identifier`(100))
而不是:
UNIQUE KEY `provider` (`provider`,`identifier`)
关于mysql - PHPMyAdmin 中的 SQL 查询未执行,显示错误 #1071,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21721409/