154

データベースから 1 つを除くすべてのテーブルを削除しようとすると、次のエラーが発生します。

親行を削除または更新できません: 外部キー制約が失敗します

もちろん、試行錯誤してこれらの主要な制約が何であるかを確認し、最終的にすべてのテーブルを削除することはできますが、すべてのテーブルを強制的に削除する迅速な方法があるかどうかを知りたいです (それらを再挿入できるようになるため)削除したくない)。

Googleは、次の方法を提案しているサイトに私を向けました:

mysql> SET foreign_key_checks = 0;
mysql> drop table ...
mysql> SET foreign_key_checks = 1;

簡単な答えは、さらにいくつかのテーブルを削除できたときに同じエラーが発生したため、実際にはうまくいかなかったということです。特定のテーブルにリンクされたすべての外部キーを取得するスタックオーバーフローの方法を見てきましたが、すべてをスクリプト化しない限り、時間がかかりすぎます (他にオプションがない場合に実行可能です)。

データベースは4.1なので使えないDROP DATABASE

アイデア?

4

7 に答える 7

451

これは、検索からここにたどり着く人にとって役立つかもしれません。ビューではなくテーブルを削除しようとしていることを確認してください。

外部キー チェックを設定 = 0;
-- テーブルを削除
ドロップテーブル ...
-- ドロップ ビュー
ビューをドロップ ...
外部キー チェックを設定 = 1;

SET foreign_key_checks = 0外部キーチェックをオフにSET foreign_key_checks = 1設定してから、外部キーチェックをオンに戻すことです。チェックがオフになっている間はテーブルを削除できますが、テーブル構造の整​​合性を維持するためにチェックがオンに戻されます。

于 2010-05-20T13:13:21.863 に答える
19

phpmyadminを使用している場合、この機能は既に存在します。

  • 削除するテーブルを選択します
  • テーブル リストの下部にあるドロップダウンから、[ドロップ] を選択します。
  • 新しいページが開き、下部に「Foreign key check」というチェックボックスが表示されるので、チェックを外します。
  • 「はい」を受け入れて削除を確認します。
于 2015-01-09T14:44:59.150 に答える
4

次の手順を使用できます。制約のあるテーブルを削除するのに役立ちました。解決策は上記のコメントで既に説明されています。そのためのスクリーンショットを追加しました-ここに画像の説明を入力

于 2014-07-02T15:46:42.100 に答える
3

ドロップ データベースは、MySQL のすべてのバージョンに存在します。しかし、テーブル構造を維持したい場合は、ここにアイデアがあります

mysqldump --no-data --add-drop-database --add-drop-table -hHOSTNAME -uUSERNAME -p > dump.sql

これはプログラムであり、mysql コマンドではありません

次に、mysql にログインし、

ソース dump.sql;

于 2010-02-20T00:55:21.617 に答える
-47

データを保持する必要がないため、データベース全体を削除して、新しいデータベースを作成します。

于 2010-02-19T23:53:44.313 に答える