Как сбросить уникальность в 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



2

Для MySQL 5.7.11

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

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

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

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

.....

.....

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

.....

....

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

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

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

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

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

Вот и все.



1

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

ALTER TABLE  `0_ms_labdip_details` DROP INDEX column_tcx

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


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.