2012-12-19 163 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