web-dev-qa-db-ja.com

ライブテーブルを変更して、キーを一意でないものにします

これに関連する他のいくつかの質問を見ましたが、それらはMySQLではありませんでした。

データベースはライブデータベースなので、テーブルを削除して再作成したくありません。単に列を一意でなくしたいだけです。これは本質的に許容度が低いため、問題が発生することはありません。

14
Alexander Bird

列がUNIQUE句を使用して一意に定義されている場合は、次を使用します。

ALTER TABLE mytable DROP INDEX constraint_name

、または、制約に暗黙的に名前が付けられている場合は、

ALTER TABLE mytable DROP INDEX column_name

PRIMARY KEY句を使用して一意に定義されている場合は、次を使用します。

ALTER TABLE mytable DROP PRIMARY KEY

ただし、テーブルがInnoDBの場合、PRIMARY KEYを削除すると、テーブルが暗黙的に再作成され、すべてのインデックスが再構築されます。これにより、テーブルがロックされ、かなり長い間アクセスできなくなる可能性があります。 。

32
Quassnoi

これらはphpmyadminアプリの説明です(phpMyAdminを使用している場合)::

場合によっては、開発者(あなた)はそれを削除したくないかもしれませんが、単に「一意性」を「非一意性」に変更するだけです。

手順:

  1. 変更を加えたいコンテキストのテーブルに移動します

  2. [構造]タブ(主に[参照]の横)をクリックします

  3. 列のすぐ下にある「+ Indexes」リンクを探します。ええ...今それをクリックします
  4. これで、すべての「インデックス」が表示され、「ドロップ」ボタンまたはリンクをクリックして変更できます。

答えはここで見つかりました:ソース: https://forums.phpfreaks.com/topic/164827-phpmyadmin-how-to-make-not-unique/

4
AppEmmanuel

DROPだけが一意のインデックスです。そこにすべきではないそれがライブDBであるという事実に問題があります。非常に大きなテーブルの場合、インデックスが削除されている間、一部のクエリを一時的にブロックすることがあります。しかし、それはshouldインデックスを追加した場合にのみ発生します。

ALTER TABLE table_name DROP INDEX index_name;
1
Jason McCreary