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

一意のキーをドロップするemail方法は?

回答:


278

MySQLのインデックスを削除するには、次のSQLスクリプトを使用するだけです。

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の後の電子メールはインデックスの名前であり、オプションではありません。INDEXの代わりにKEYを使用できます。

また、そのような複数列の一意のインデックスを作成(削除)することもできます。

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

複数列インデックスの名前を指定しなかった場合は、次のように削除できます。

mysql> DROP INDEX email ON fuinfo;

ここで、emailは列名です。


5
これらはすべて実際にとにかくALTER TABLEを実行するため、実際にそれを回避しているわけではありません。それは同じことの異なる構文です。
mpeters 2012

9

mysql> fuinfoのDROP INDEX電子メール;

ここで、emailは(列名ではなく)一意のキーです。一意のキーの名前は

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

column_nametable_nameのDROP INDEX

データベースを選択し、sqlタブからクエリを実行します。これにより、特定の列のインデックスが削除されます。PHP MyADMINで私のために働いた



2

MySQL 5.7.11の場合

ステップ-1:最初に一意のキーを取得する

このクエリを使用して取得します。

1.1)SHOW CREATE TABLEユーザー;

最後は次のようになります:

.....

.....

一意キーUK_8bv559q1gobqoulqpitq0gvr6phoneNum

.....

....

ステップ-2:このクエリで一意のキーを削除します。

ALTER TABLEユーザードロップインデックスUK_8bv559q1gobqoulqpitq0gvr6;

ステップ-3:次のクエリでテーブル情報を確認します。

DESCユーザー;

これにより、インデックスが削除されたことが示されます。

それで全部です。



1

列のuiqueを削除してみてください。

ALTER TABLE  `0_ms_labdip_details` DROP INDEX column_tcx

このコードをphpmyadminで実行し、一意の列を削除します


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.