Bagaimana cara menjatuhkan unik di 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

Saya ingin melepas kunci unik email, bagaimana?

Topeng
sumber

Jawaban:

278

Cukup Anda dapat menggunakan SQL Script berikut untuk menghapus indeks di MySQL:

alter table fuinfo drop index email;
Wael Dalloul
sumber
26
Perhatikan bahwa Anda mungkin tidak dapat menjatuhkan kunci seperti ini jika kunci asing ke emailkolom ada (kesalahan 150). Agar ini berfungsi, jatuhkan kunci asing terlebih dahulu, lalu lepas indeks, dan buat kembali kunci asing setelahnya. misalnya ALTER TABLE fuinfo DROP kunci asing fk_name_for_email;
Brad Parks
61

Ada cara yang lebih baik yang tidak perlu Anda ubah tabel:

mysql> DROP INDEX email ON fuinfo;

di mana email adalah nama kunci unik (indeks).

Anda juga dapat mengembalikannya seperti itu:

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

di mana email setelah IDEX adalah nama indeks dan itu bukan opsional. Anda dapat menggunakan KEY bukannya INDEX.

Juga dimungkinkan untuk membuat (menghapus) indecies unik multicolumn seperti itu:

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

Jika Anda tidak menentukan nama indeks multikolom, Anda dapat menghapusnya seperti itu:

mysql> DROP INDEX email ON fuinfo;

di mana email adalah nama kolom.

arty
sumber
5
semua ini sebenarnya akan melakukan ALTER TABLE, jadi sepertinya Anda tidak menghindarinya. Itu hanya sintaks yang berbeda untuk hal yang sama.
mpeters
9

mysql> DROP email INDEX PADA fuinfo;

di mana email adalah kunci unik (bukan nama kolom). Anda menemukan nama kunci unik oleh

mysql> SHOW CREATE TABLE fuinfo;

di sini Anda melihat nama kunci unik, yang bisa berupa email_2, misalnya. Begitu...

mysql> DROP INDEX email_2 ON fuinfo;

mysql> DESCRIBE fuinfo;

Ini harus menunjukkan bahwa indeks dihapus

gavin
sumber
5

Gunakan kueri di bawah ini:

ALTER TABLE `table_name` DROP INDEX key_name;

Jika Anda tidak tahu key_name maka cobalah dulu di bawah permintaan, Anda bisa mendapatkan key_name.

SHOW CREATE TABLE table_name

ATAU

SHOW INDEX FROM table_name;

Jika Anda ingin menghapus / menjatuhkan kunci utama dari tabel mysql, Gunakan kueri di bawah ini untuk itu

ALTER TABLE `products` DROP INDEX `PRIMARY`;

Kode Diambil dari: http://chandreshrana.blogspot.in/2015/10/how-to-remove-unique-key-from-mysql.html

Chandresh
sumber
4

Jatuhkan indeks column_name ON table_name

Pilih basis data dan kueri dari tab sql. Ini menghapus indeks kolom tertentu. Ini bekerja untuk saya di PHP MyADMIN

Lina Gom
sumber
3

Ini dapat membantu orang lain

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

Untuk MySQL 5.7.11

Langkah-1: Pertama-tama dapatkan Kunci Unik

Gunakan kueri ini untuk mendapatkannya:

1.1) SHOW CREATE TABLE User;

Yang terakhir, akan seperti ini:

.....

.....

KUNCI UNIK UK_8bv559q1gobqoulqpitq0gvr6( phoneNum)

.....

....

Langkah-2: Hapus kunci unik oleh kueri ini.

ALTER TABEL Pengguna DROP INDEX UK_8bv559q1gobqoulqpitq0gvr6;

Langkah-3: Periksa info tabel, dengan kueri ini:

Pengguna DESC;

Ini harus menunjukkan bahwa indeks dihapus

Itu saja.

ArunDhwaj IIITH
sumber
1

ALTER TABLE 0_value_addition_setup  DROP  INDEX   value_code
kekuatan radhason
sumber
1

Cobalah untuk menghapus uique kolom:

ALTER TABLE  `0_ms_labdip_details` DROP INDEX column_tcx

Jalankan kode ini di phpmyadmin dan hapus keunikan kolom

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

ini akan berhasil.

Curtis H
sumber