MySQLでは、テーブルを削除します。
多くのことを試しましたが、bericht
という名前のテーブルを削除できないというエラーが表示され続けます。これは私が得ているエラーです:
#1217-親行を削除または更新できない:外部キー制約が失敗する
このテーブルを削除するにはどうすればよいですか?
これでうまくいくはずです:
SET FOREIGN_KEY_CHECKS=0; DROP TABLE bericht; SET FOREIGN_KEY_CHECKS=1;
他の人が指摘するように、これは質問で尋ねられたものであるにもかかわらず、あなたが望むものはほとんどありません。より安全な解決策は、bericht
を削除する前にbericht
に応じてテーブルを削除することです。その方法については、CloudyMarbleの回答を参照してください。投稿でbashとメソッドを使用して、データベース自体を削除および再作成したくない、または削除できない場合に、データベース内のすべてのテーブルを削除します。
#1217
エラーは、他のテーブルに削除しようとしているテーブルへの外部キー制約があり、InnoDBデータベースエンジンを使用している場合に発生します。このソリューションは、拘束のチェックを一時的に無効にしてから、再び有効にします。 ドキュメント を読んでください。 bericht
に応じて、テーブル内の外部キー制約とフィールドを必ず削除してください。そうしないと、データベースが破損した状態のままになる可能性があります。
これを試して:
SELECT *
FROM information_schema.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_NAME = 'YourTable';
これにより、ドロップするテーブルへの参照を持つテーブル、これらの参照をドロップした後、またはこのテーブルのデータセットを参照するデータセットを提供し、テーブルをドロップできます
つかいます show create table tbl_name
外部キーを表示するには
この構文を使用して、外部キーを削除できます。
ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol
ここにも詳細情報があります(Frank Vanderhallenの投稿を参照): http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html
これはおそらく、他のスキーマと同じテーブルを持っているため、そのエラーが発生する理由です。
最初に子行、次に親行をドロップする必要があります。
私はこれがしばらくの間古く、答えが選択されていたことを認識していますが、外部キーを[〜#〜] null [〜#〜 ]そして、ON DELETE SET NULLを選択します。
基本的に、テーブルは次のように変更する必要があります。
_ALTER TABLE 'bericht' DROP FOREIGN KEY 'your_foreign_key';
_
ALTER TABLE 'bericht' ADD CONSTRAINT 'your_foreign_key' FOREIGN KEY ('column_foreign_key') REFERENCES 'other_table' ('column_parent_key') ON UPDATE CASCADE ON DELETE SET NULL;
個人的には、「ON UPDATE CASCADE」と「ON DELETE SET NULL」の両方を使用して不要な複雑化を回避することをお勧めしますが、設定によって異なるアプローチが必要になる場合があります。
お役に立てれば。