Como cair único no MySQL?

139
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

Quero soltar a chave exclusiva email, como?

mascarar
fonte

Respostas:

278

Simplesmente você pode usar o seguinte script SQL para excluir o índice no MySQL:

alter table fuinfo drop index email;
Wael Dalloul
fonte
26
Observe que você pode não conseguir soltar uma chave como esta se existir uma chave estrangeira na emailcoluna (erro 150). Para que isso funcione, solte a chave estrangeira primeiro, solte o índice e recrie a chave estrangeira posteriormente. por exemplo, ALTER TABLE fuinfo DROP chave estrangeira fk_name_for_email;
Brad Parks
61

Existe uma maneira melhor que não precisa que você altere a tabela:

mysql> DROP INDEX email ON fuinfo;

onde email é o nome da chave exclusiva (índice).

Você também pode trazê-lo de volta assim:

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

onde email após IDEX é o nome do índice e não é opcional. Você pode usar KEY em vez de INDEX.

Também é possível criar (remover) indecies únicas de várias colunas assim:

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

Se você não especificou o nome do índice de várias colunas, pode removê-lo assim:

mysql> DROP INDEX email ON fuinfo;

onde email é o nome da coluna.

arty
fonte
5
tudo isso realmente faz um ALTER TABLE de qualquer maneira, então não é como se você estivesse realmente evitando isso. É apenas uma sintaxe diferente para a mesma coisa.
mpeters
9

mysql> DROP INDEX email ON fuinfo;

onde email é a chave exclusiva (em vez do nome da coluna). Você encontra o nome da chave exclusiva pressionando

mysql> SHOW CREATE TABLE fuinfo;

aqui você vê o nome da chave exclusiva, que pode ser email_2, por exemplo. Assim...

mysql> DROP INDEX email_2 ON fuinfo;

mysql> DESCRIBE fuinfo;

Isso deve mostrar que o índice foi removido

gavin
fonte
5

Use a consulta abaixo:

ALTER TABLE `table_name` DROP INDEX key_name;

Se você não souber o nome-chave, tente primeiro a consulta abaixo, é possível obter o nome-chave.

SHOW CREATE TABLE table_name

OU

SHOW INDEX FROM table_name;

Se você deseja remover / soltar a chave primária da tabela mysql, use a consulta abaixo para isso

ALTER TABLE `products` DROP INDEX `PRIMARY`;

Código Retirado de: http://chandreshrana.blogspot.in/2015/10/how-to-remove-unique-key-from-mysql.html

Chandresh
fonte
4

DROP INDEX column_nameON table_name

Selecione o banco de dados e a consulta na guia sql. Isso remove o índice da coluna específica. Funcionou para mim no PHP MyADMIN

Lina Gom
fonte
3

Isso pode ajudar outras pessoas

alter table fuinfo drop index fuinfo_email_unique
Md Rashedul Hoque Bhuiyan
fonte
2

Para o MySQL 5.7.11

Etapa 1: primeiro obtenha a chave exclusiva

Use esta consulta para obtê-lo:

1.1) MOSTRAR CRIAR TABELA Usuário;

No último, será assim:

.....

.....

CHAVE ÚNICA UK_8bv559q1gobqoulqpitq0gvr6( phoneNum)

.....

....

Etapa 2: remova a chave Exclusiva desta consulta.

ALTER TABLE Usuário DROP INDEX UK_8bv559q1gobqoulqpitq0gvr6;

Etapa 3: verifique as informações da tabela, nesta consulta:

Usuário DESC;

Isso deve mostrar que o índice foi removido

Isso é tudo.

ArunDhwaj IIITH
fonte
1

ALTER TABLE 0_value_addition_setup  DROP  INDEX   value_code
poder da radão
fonte
1

Tente remover o uique de uma coluna:

ALTER TABLE  `0_ms_labdip_details` DROP INDEX column_tcx

Execute esse código no phpmyadmin e remova exclusivo da coluna

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

isso vai funcionar.

Curtis H
fonte