2009-10-14 48 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