286

テーブルから制約を削除したい。私の質問は:

ALTER TABLE `tbl_magazine_issue` 
DROP CONSTRAINT `FK_tbl_magazine_issue_mst_users`

しかし、エラーが発生しました:

#1064-SQL構文にエラーがあります。FK_tbl_magazine_issue_mst_users1行目の「constraint」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

4

11 に答える 11

462

Mysqlには、外部キー制約を削除するための特別な構文があります。

ALTER TABLE tbl_magazine_issue
  DROP FOREIGN KEY FK_tbl_magazine_issue_mst_users
于 2013-01-02T12:35:05.947 に答える
63

私は同じ問題を抱えていて、このコードで解決する必要がありました:

ALTER TABLE `table_name` DROP FOREIGN KEY `id_name_fk`;
ALTER TABLE `table_name` DROP INDEX  `id_name_fk`;
于 2013-08-19T15:40:52.787 に答える
27

DROP CONSTRAINTMySQLのようなものはありません 。あなたの場合、DROP FOREIGN KEY代わりに使用することができます。

于 2013-01-02T12:35:42.890 に答える
17

制約が外部キーでない場合、例えば。'UNIQUE CONSTRAINT(colA、colB)'を使用して追加されたものは、を使用して削除できるインデックスです。ALTER TABLE ... DROP INDEX ...

于 2015-01-06T10:58:33.523 に答える
9

Robert Knightの回答に少し追加すると、投稿のタイトル自体に外部キーが記載されていないため(また、彼には完全なコードサンプルがなく、SOのコメントコードブロックが回答のコードと同様に表示されないため)ブロック)、一意の制約のためにこれを追加します。これらのいずれかが制約を削除するために機能します。

ALTER TABLE `table_name` DROP KEY `uc_name`;

また

ALTER TABLE `table_name` DROP INDEX `uc_name`;
于 2017-05-04T17:34:06.753 に答える
9

また、mysqlデータベースからのすべての外部キーチェックを一時的に無効にすることができます。 SET FOREIGN_KEY_CHECKS=0; それを再度有効にするには: SET FOREIGN_KEY_CHECKS=1;

于 2018-02-20T13:12:34.503 に答える
4

FK_[parent table]_[referenced table]_[referencing field]一部のORMまたはフレームワークは、変更できるため、外部キーにデフォルトとは異なる命名規則を使用します。

たとえば、Laravelは[parent table]_[referencing field]_foreign命名規則として使用します。次に示すように、このクエリを使用して外部キーの名前を表示できます

SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
WHERE REFERENCED_TABLE_SCHEMA = '<database>' AND REFERENCED_TABLE_NAME = '<table>';

次に、前述のDROP FOREIGN KEYクエリとその固有名を実行して、外部キーを削除します。

于 2016-11-25T09:48:15.283 に答える
3

MariaDBを使用してここに来る人のために:

MariaDBでは、一般にDROP CONSTRAINTステートメントが許可されていることに注意してください。たとえば、チェック制約を削除する場合などです。

ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

https://mariadb.com/kb/en/library/alter-table/

于 2018-08-30T15:33:55.780 に答える
2
  1. テーブルの構造ビューに移動します
  2. 上部に2つのオプションが表示されます。a。テーブル構造b。リレーションビュー
  3. 次に、リレーションビューをクリックします。ここで、外部キー制約を削除できます。ここですべての関係を取得します。
于 2016-06-22T06:38:11.997 に答える
2

制約を削除する最も簡単な方法は、MySQL8.0.19ALTER TABLE tbl_name DROP CONSTRAINT symbol;で導入された構文を使用することです。

MySQL 8.0.19以降、ALTER TABLEでは、任意のタイプの既存の制約を削除および変更するためのより一般的な(およびSQL標準の)構文が許可されます。制約タイプは、制約名から決定されます。

ALTER TABLE tbl_magazine_issue DROP CONSTRAINT FK_tbl_magazine_issue_mst_users;

db<>フィドルデモ

于 2020-01-20T21:38:45.360 に答える
-4

これはMySQLで機能して制約を削除します

alter table tablename drop primary key;

alter table tablename drop foreign key;
于 2015-05-03T06:30:35.140 に答える