2012-12-19 120 views
1

这里是sql,但是,有一个错误说“*#1061 - 重复密钥名'unique_id'*”,这是什么问题。重复密钥名'unique_id'

create table `users`(
    uid int(11) auto_increment, 
    unique_id varchar(23) not null unique, 
    name varchar(50) not null, 
    email varchar(100) not null unique, 
    encrypted_password varchar(80) not null, 
    salt varchar(10) not null, 
    created_at datetime, 
    updated_at datetime null, 
    PRIMARY KEY (`unique_id`), 
    UNIQUE KEY `uid` (`uid`), 
    UNIQUE KEY `unique_id` (`unique_id`), 
    UNIQUE KEY `email` (`email`) 
)ENGINE=InnoDB AUTO_INCREMENT=877888 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

回答

11

删除此行

UNIQUE KEY `unique_id` (`unique_id`), 

因为unique_id已经Primary Key。和Primary Keys独特

CREATE TABLE声明

create table `users` 
(
    uid int(11) auto_increment, 
    unique_id varchar(23) not null, 
    name varchar(50) not null, 
    email varchar(100) not null unique, -- specified here 
    encrypted_password varchar(80) not null, 
    salt varchar(10) not null, 
    created_at datetime, 
    updated_at datetime null, 
    PRIMARY KEY (`unique_id`), 
    UNIQUE KEY `uid` (`uid`) 
) ENGINE=InnoDB AUTO_INCREMENT=877888 
DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 
+0

谢谢,我删除了声明,但是,#1061 - 重复发生是键名 '电子邮件',为什么呢?因为'email'已经存在,所以 – william007

+0

。尝试'独特的钥匙email_uq(电子邮件)'看到这里演示,http://sqlfiddle.com/#!2/ac712 –

+0

对不起,但你的意思是电子邮件已存在?以及为什么我们可以指定UNIQUE KEY'uid'('uid') – william007