Jak upuścić unikalny w 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

Chcę podrzucić unikalny klucz email, jak?

Maska
źródło

Odpowiedzi:

278

Po prostu możesz użyć następującego skryptu SQL, aby usunąć indeks w MySQL:

alter table fuinfo drop index email;
Wael Dalloul
źródło
26
Zauważ, że możesz nie być w stanie upuścić takiego klucza, jeśli istnieje klucz obcy do emailkolumny (błąd 150). Aby to zadziałało, najpierw upuść klucz obcy, a następnie indeks, a następnie ponownie utwórz klucz obcy. np. ALTER TABLE fuinfo DROP klucz obcy fk_name_for_email;
Brad Parks
61

Jest lepszy sposób, który nie wymaga zmiany tabeli:

mysql> DROP INDEX email ON fuinfo;

gdzie email to nazwa unikalnego klucza (indeksu).

Możesz również przywrócić go w ten sposób:

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

gdzie e-mail po IDEX jest nazwą indeksu i nie jest opcjonalny. Możesz użyć KEY zamiast INDEX.

Możliwe jest również tworzenie (usuwanie) wielokolumnowych unikalnych gatunków, w ten sposób:

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

Jeśli nie podałeś nazwy indeksu wielokolumnowego, możesz go usunąć w ten sposób:

mysql> DROP INDEX email ON fuinfo;

gdzie email to nazwa kolumny.

pretensjonalny
źródło
5
wszystkie z nich i tak spowodują ALTER TABLE, więc nie jest tak, że tak naprawdę tego unikasz. To po prostu inna składnia dla tej samej rzeczy.
mpeters
9

mysql> DROP INDEX email ON fuinfo;

gdzie email jest unikalnym kluczem (a nie nazwą kolumny). Nazwę unikalnego klucza znajdziesz według

mysql> SHOW CREATE TABLE fuinfo;

tutaj zobaczysz nazwę unikalnego klucza, na przykład email_2. Więc...

mysql> DROP INDEX email_2 ON fuinfo;

mysql> DESCRIBE fuinfo;

Powinno to pokazać, że indeks został usunięty

gavin
źródło
5

Użyj poniższego zapytania:

ALTER TABLE `table_name` DROP INDEX key_name;

Jeśli nie znasz nazwy_klucza, spróbuj najpierw wykonać poniższe zapytanie, możesz uzyskać nazwę_klucza.

SHOW CREATE TABLE table_name

LUB

SHOW INDEX FROM table_name;

Jeśli chcesz usunąć / upuścić klucz podstawowy z tabeli mysql, użyj do tego poniższego zapytania

ALTER TABLE `products` DROP INDEX `PRIMARY`;

Kod zaczerpnięty z: http://chandreshrana.blogspot.in/2015/10/how-to-remove-unique-key-from-mysql.html

Chandresh
źródło
4

DROP INDEX column_nameON nazwa_tabeli

Wybierz bazę danych i zapytaj z zakładki sql, co spowoduje usunięcie indeksu określonej kolumny. U mnie zadziałało w PHP MyADMIN

Lina Gom
źródło
3

To może pomóc innym

alter table fuinfo drop index fuinfo_email_unique
Md Rashedul Hoque Bhuiyan
źródło
2

Dla MySQL 5.7.11

Krok 1: Najpierw zdobądź unikalny klucz

Użyj tego zapytania, aby to uzyskać:

1.1) POKAŻ TWORZENIE TABELI Użytkownika;

W końcu będzie tak:

.....

.....

UNIKALNY KLUCZ UK_8bv559q1gobqoulqpitq0gvr6( phoneNum)

.....

....

Krok 2: Usuń unikalny klucz za pomocą tego zapytania.

ALTER TABLE User DROP INDEX UK_8bv559q1gobqoulqpitq0gvr6;

Krok 3: Sprawdź informacje o tabeli, używając tego zapytania:

Użytkownik DESC;

Powinno to pokazać, że indeks został usunięty

To wszystko.

ArunDhwaj IIITH
źródło
1

ALTER TABLE 0_value_addition_setup  DROP  INDEX   value_code
moc radhason
źródło
1

Spróbuj usunąć uique z kolumny:

ALTER TABLE  `0_ms_labdip_details` DROP INDEX column_tcx

Uruchom ten kod w phpmyadmin i usuń unikalną kolumnę

Radhason
źródło
0
 ALTER TABLE [table name] DROP KEY [key name];

to zadziała.

Curtis H.
źródło