¿Cómo soltar único en 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

Quiero soltar la clave única email, ¿cómo?

Máscara
fuente

Respuestas:

278

Simplemente puede usar la siguiente secuencia de comandos SQL para eliminar el índice en MySQL:

alter table fuinfo drop index email;
Wael Dalloul
fuente
26
Tenga en cuenta que es posible que no pueda soltar una clave como esta si emailexiste una clave externa para la columna (error 150). Para que esto funcione, suelte primero la clave externa, luego suelte el índice y vuelva a crear la clave externa después. por ejemplo, ALTER TABLE fuinfo DROP clave externa fk_name_for_email;
Brad Parks
61

Hay una mejor manera que no necesita alterar la tabla:

mysql> DROP INDEX email ON fuinfo;

donde correo electrónico es el nombre de la clave única (índice).

También puedes traerlo de vuelta así:

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

donde el correo electrónico después de IDEX es el nombre del índice y no es opcional. Puede usar KEY en lugar de INDEX.

También es posible crear (eliminar) sangrías únicas de varias columnas como esa:

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

Si no especificó el nombre del índice de varias columnas, puede eliminarlo así:

mysql> DROP INDEX email ON fuinfo;

donde correo electrónico es el nombre de la columna.

pretensioso
fuente
55
De todos modos, todo esto hará una TABLA DE ALTERACIÓN, así que no es como si realmente estuvieras evitando eso. Es solo una sintaxis diferente para la misma cosa.
mpeters
9

mysql> DROP INDEX email EN fuinfo;

donde el correo electrónico es la clave única (en lugar del nombre de la columna). Encuentra el nombre de la clave única por

mysql> SHOW CREATE TABLE fuinfo;

Aquí puede ver el nombre de la clave única, que podría ser email_2, por ejemplo. Entonces...

mysql> DROP INDEX email_2 ON fuinfo;

mysql> DESCRIBE fuinfo;

Esto debería mostrar que el índice se elimina

gavin
fuente
5

Utilice la consulta a continuación:

ALTER TABLE `table_name` DROP INDEX key_name;

Si no conoce el nombre_clave, primero intente debajo de la consulta, puede obtener el nombre_clave.

SHOW CREATE TABLE table_name

O

SHOW INDEX FROM table_name;

Si desea eliminar / soltar la clave primaria de la tabla mysql, use la consulta a continuación para eso

ALTER TABLE `products` DROP INDEX `PRIMARY`;

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

Chandresh
fuente
4

DROP INDEX column_nameON nombre_tabla

Seleccione la base de datos y consulte la pestaña sql. Esto elimina el índice de la columna en particular. Funcionó para mí en PHP MyADMIN

Lina Gom
fuente
3

Esto puede ayudar a otros

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

Para MySQL 5.7.11

Paso 1: Primero obtén la clave única

Use esta consulta para obtenerla:

1.1) MOSTRAR CREAR TABLA Usuario;

En el último, será así:

.....

.....

CLAVE ÚNICA UK_8bv559q1gobqoulqpitq0gvr6( phoneNum)

.....

....

Paso 2: elimine la clave única mediante esta consulta.

ALTER TABLE User DROP INDEX UK_8bv559q1gobqoulqpitq0gvr6;

Paso 3: Verifique la información de la tabla, mediante esta consulta:

Usuario DESC;

Esto debería mostrar que el índice se elimina

Eso es todo.

ArunDhwaj IIITH
fuente
1

ALTER TABLE 0_value_addition_setup  DROP  INDEX   value_code
poder radhason
fuente
1

Pruébelo para eliminar la uique de una columna:

ALTER TABLE  `0_ms_labdip_details` DROP INDEX column_tcx

Ejecute este código en phpmyadmin y elimine el exclusivo de la columna

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

Esto funcionará.

Curtis H
fuente