2009-10-14 83 views
115
Create Table: CREATE TABLE `fuinfo` (
    `fid` int(10) unsigned NOT NULL, 
    `name` varchar(40) NOT NULL, 
    `email` varchar(128) NOT NULL, 
    UNIQUE KEY `email` (`email`), 
    UNIQUE KEY `fid` (`fid`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 

我想丟掉email上的唯一密鑰,怎麼樣?如何在MySQL中刪除唯一?

回答

234

只要您可以使用下面的SQL腳本刪除索引在MySQL:

alter table fuinfo drop index email; 
+20

請注意,如果存在「email」列的外鍵(錯誤150),則可能無法刪除此類鍵。爲了使它起作用,首先刪除外鍵,然後刪除索引,然後重新創建外鍵。例如ALTER TABLE fuinfo DROP外鍵fk_name_for_email; – 2012-12-12 20:08:47

52

有哪些不需要你改變表有更好的方式:

mysql> DROP INDEX email ON fuinfo; 

哪裏電子郵件是唯一密鑰(索引)的名稱。

你也可以把它帶回這樣的:

mysql> CREATE UNIQUE INDEX email ON fuinfo(email); 

其中IDEX後的電子郵件是索引的名稱,它不是可選的。您可以使用KEY而不是INDEX。

此外,它可以創建(刪除),多字段唯一indecies這樣的:

mysql> CREATE UNIQUE INDEX email_fid ON fuinfo(email, fid); 
mysql> DROP INDEX email_fid ON fuinfo; 

如果沒有指定多列索引的名字,你可以將其刪除這樣的:

mysql> DROP INDEX email ON fuinfo; 

email是列名。

+3

所有這些實際上都會執行ALTER TABLE,所以它不像你真的在避免這種情況。對於同樣的事情,它只是一種不同的語法。 – mpeters 2012-09-12 16:06:51

9

mysql> DROP INDEX email on fuinfo;

其中電子郵件是唯一鍵(而不是列名)。您可以通過

mysql> SHOW CREATE TABLE fuinfo; 

在這裏你看到的唯一鍵,這可能是EMAIL_2,例如名稱找到唯一鍵的名稱。所以......

mysql> DROP INDEX email_2 ON fuinfo; 

mysql> DESCRIBE fuinfo; 

這應該表明該指數被刪除

+0

感謝此信息幫助我 – 2017-12-06 11:11:33

4

DROP INDEX ON column_name table_name的

選擇數據庫和查詢的形式保存SQL tab.This刪除特定列的索引。它爲我工作在PHP MyADMIN

2

這可以幫助別人

alter table fuinfo drop index fuinfo_email_unique 
1

ALTER TABLE 0_value_addition_setup DROP INDEX value_code 
1

嘗試刪除列的uique:

ALTER TABLE `0_ms_labdip_details` DROP INDEX column_tcx 

運行這段代碼在phpMyAdmin和刪除唯一列的

1

對於MySQL 5.7.11

第1步:首先拿到Unique Key

使用此查詢以獲取它:

1.1)SHOW CREATE TA BLE用戶;

在過去,這將是這樣的:

.....

.....

UNIQUE KEY UK_8bv559q1gobqoulqpitq0gvr6phoneNum

....

....

第2步:刪除U這個查詢的關鍵字。

ALTER TABLE User DROP INDEX UK_8bv559q1gobqoulqpitq0gvr6;

步驟3:檢查表信息,此查詢:

倒序用戶;

這應該表明該指數被刪除

這就是全部。

0
ALTER TABLE [table name] DROP KEY [key name]; 

這將工作。

+0

這不會提供問題的答案。一旦你有足夠的[聲譽](https://stackoverflow.com/help/whats-reputation),你將能夠[評論任何帖子](https:// stackoverflow。COM /幫助/權限/評論);相反,[提供不需要提問者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [來自評論](/ review/low-quality-posts/18374275) – Mamun 2017-12-29 02:03:02