Как сбросить уникальность в MySQL?

142
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, как?

Маска
источник

Ответы:

283

Просто вы можете использовать следующий сценарий SQL для удаления индекса в MySQL:

alter table fuinfo drop index email;
Ваэль Даллул
источник
26
Обратите внимание, что вы не сможете удалить такой ключ, если существует внешний ключ для emailстолбца (ошибка 150). Чтобы это сработало, сначала отбросьте внешний ключ, затем отбросьте индекс и затем заново создайте внешний ключ. например, ALTER TABLE fuinfo DROP внешний ключ fk_name_for_email;
Брэд Паркс,
61

Есть лучший способ, который не требует от вас изменения таблицы:

mysql> DROP INDEX email ON fuinfo;

где электронная почта - это имя уникального ключа (индекса).

Вы также можете вернуть его вот так:

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

где электронная почта после IDEX - это имя индекса, и это не обязательно. Вы можете использовать KEY вместо INDEX.

Также возможно создание (удаление) многоколоночных уникальных индексов, таких как:

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

Если вы не указали название многоколоночного индекса, то можете удалить его так:

mysql> DROP INDEX email ON fuinfo;

где электронная почта - это имя столбца.

артистичный
источник
5
все они в любом случае будут выполнять ALTER TABLE, так что не похоже, что вы действительно этого избегаете. Это просто другой синтаксис для одного и того же.
mpeters
9

mysql> DROP INDEX email ON fuinfo;

где электронная почта - это уникальный ключ (а не имя столбца). Вы найдете имя уникального ключа

mysql> SHOW CREATE TABLE fuinfo;

здесь вы видите имя уникального ключа, например, email_2. Так...

mysql> DROP INDEX email_2 ON fuinfo;

mysql> DESCRIBE fuinfo;

Это должно показать, что индекс удален

Гэвин
источник
5

Используйте запрос ниже:

ALTER TABLE `table_name` DROP INDEX key_name;

Если вы не знаете key_name, сначала попробуйте запрос ниже, вы можете получить key_name.

SHOW CREATE TABLE table_name

ИЛИ

SHOW INDEX FROM table_name;

Если вы хотите удалить / удалить первичный ключ из таблицы mysql, используйте для этого запрос ниже

ALTER TABLE `products` DROP INDEX `PRIMARY`;

Код взят из: http://chandreshrana.blogspot.in/2015/10/how-to-remove-unique-key-from-mysql.html

Чандреш
источник
4

DROP INDEX column_nameON имя_таблицы

Выберите базу данных и запросите из вкладки sql. Это удалит индекс определенного столбца. Это сработало для меня в PHP MyADMIN

Лина Гом
источник
3

Это может помочь другим

alter table fuinfo drop index fuinfo_email_unique
Md Rashedul Hoque Bhuiyan
источник
2

Для MySQL 5.7.11

Шаг 1. Сначала получите уникальный ключ

Используйте этот запрос, чтобы получить это:

1.1) ПОКАЗАТЬ СОЗДАТЬ ТАБЛИЦУ пользователя;

В последнем будет так:

.....

.....

УНИКАЛЬНЫЙ КЛЮЧ UK_8bv559q1gobqoulqpitq0gvr6( phoneNum)

.....

....

Шаг 2: Удалите уникальный ключ по этому запросу.

ALTER TABLE Пользовательский DROP INDEX UK_8bv559q1gobqoulqpitq0gvr6;

Шаг 3: Проверьте информацию о таблице по этому запросу:

Пользователь DESC;

Это должно показать, что индекс удален

Вот и все.

АрунДхвадж Иитх
источник
1

ALTER TABLE 0_value_addition_setup  DROP  INDEX   value_code
мощность радазона
источник
1

Попробуйте удалить uique столбца:

ALTER TABLE  `0_ms_labdip_details` DROP INDEX column_tcx

Запустите этот код в phpmyadmin и удалите уникальный столбец

Радхасон
источник
0
 ALTER TABLE [table name] DROP KEY [key name];

это будет работать.

Curtis H
источник