テーブルを削除することはあまり一般的ではありませんが、特に外部キーの関連付けがあるテーブルの場合は、削除するときにより注意する必要があります。しかし、開発プロセス中にスキーマ設計に問題が見つかり、既存のデータベース内のすべてのテーブルを削除して再作成しなければならないことがよくあります。また、テスト中にデータベース内のすべてのテーブルを再作成する必要もあります。もちろん、多くの自動化ツールでもこれを行うことができます。 テーブルを削除するときに、次のようなエラー メッセージが表示される場合があります。 エラー 1217 (23000): 親行を削除または更新できません: 外部キー制約が失敗しました これは、削除しようとしているテーブル内のフィールドが他のテーブルで外部キーとして使用されているため、このテーブル (親テーブル) を削除する前に、外部キーを持つテーブル (子テーブル) を削除する必要があります。つまり、テーブルを削除するプロセスは、テーブルを作成するプロセスと一貫している必要があります。 しかし、これは多くの場合受け入れられません。一方で、テーブルが多すぎる場合、手動での並べ替えは少し受け入れられません。他方では、現在、それらを並べ替える自動ツールはありません (実際、実現不可能ではありません)。そのため、MySQL では、必要に応じて外部キー制約をチェックするかどうかを設定するための変数 FOREIGN_KEY_CHECKS が用意されています。 一般的には、次のようにすることが推奨されます。 まず、すべての DROP ステートメントを自動的に生成し、MyDatabaseName をデータベース名に置き換えます。 SELECT concat('DROP TABLE IF EXISTS ', table_name, ';') information_schema.tables から ここで、table_schema = 'MyDatabaseName'; 次に、生成されたコードの前後に FOREIGN_KEY_CHECKS 変数を設定する次のステートメントを追加します。 FOREIGN_KEY_CHECKS = 0 を設定します -- DROP ステートメント SET FOREIGN_KEY_CHECKS = 1; ただし、最後の文を忘れても、あまり問題にはなりません。この変数はセッションに基づいています。つまり、クライアントを閉じて再接続すると、この変数はデフォルト値に戻ります。外部キー制約をグローバルにチェックする必要がない場合 (この状況は比較的まれです)、次のようにします。 グローバルFOREIGN_KEY_CHECKSを0に設定します。 または @@global.FOREIGN_KEY_CHECKS = 0 を設定します。 MySQL テーブルを削除するときに外部キー制約を無視する上記の簡単な実装は、エディターがあなたと共有するすべての内容です。これが参考になれば幸いです。また、123WORDPRESS.COM をサポートしていただければ幸いです。 以下もご興味があるかもしれません:
|
<<: nestjs における例外フィルター Exceptionfilter の具体的な使用法
>>: Centos7 に Zabbix3.0 をインストールするための非常に詳細な手順
フロントエンドテクノロジー層 (写真は少し極端ですが、参考までに) Javascript と DOM...
MySQLサーバーは--skip-grant-tablesオプションで実行されているため、このステー...
1. my.iniファイルを手動で作成して追加する # クライアントセクション # --------...
非常に珍しいパラメータ文字化けの問題に遭遇しました。まずページを見てみましょう写真に示すように、月次...
<br />関連記事: Web コンテンツ ページ作成に関する 9 つの実用的な提案、W...
タイトルの通り、高さは既知で、左と右の列の幅は 300 ピクセル、中央は適応型です。弾性ボックス自体...
1. 前の章では、プログラムを yum リポジトリに直接インストールできることを学びましたが、そのた...
基本的な構文CREATE VIEW ステートメントを使用してビューを作成できます。構文の形式は次のと...
序文ご存知のとおり、JavaScript は本質的にシングルスレッドですが、ブラウザは非同期リクエス...
Web サーバーは、独立したドメイン名を持つ複数の Web サイトを構築できるほか、通信経路上のトラ...
目次序文使用コンポーネントの記述データ構造分析プロセス分析基礎コードの分析他の要約する序文パスワード...
この記事はCentOS 7.3システム環境をベースに、MySQLとRedisのインストールと使用につ...
関数のカリー化(黒い疑問符の顔)? ? ?カレー(黒い疑問符の顔)? ? ?これは完璧な中国語翻訳で...
序文Oracle であれ MySQL であれ、新バージョンで導入された新機能は、一方では製品の機能性...
01. コマンドの概要実際には、locate コマンドは find -name の別の書き方ですが、...