一時的なデータ操作のために MySQL の外部キー制約を無効にする
MySQL では、外部キー制約により、テーブル間の関係の不一致を防ぐことでデータの整合性が確保されます。 。ただし、これらの制約により、素早いデータ操作が妨げられる場合があります。
問題:
Django でモデルのインスタンスを削除すると、外部キー制約によりエラーが発生する可能性があります。例:
cursor.execute("DELETE FROM myapp_item WHERE n = %s", n) transaction.commit_unless_managed() # a foreign key constraint fails here cursor.execute("DELETE FROM myapp_style WHERE n = %s", n) transaction.commit_unless_managed()
解決策:
外部キー制約を一時的に無効にして削除を許可するには、DISABLE KEYS コマンドを使用するか、FOREIGN_KEY_CHECKS 変数を次のように設定します。 0.
DISABLE KEYS の使用:
DISABLE KEYS
このコマンドは、現在のセッションのすべての外部キー制約を無効にします。
SET の使用FOREIGN_KEY_CHECKS 変数:
SET FOREIGN_KEY_CHECKS=0;
このコマンドは、グローバル FOREIGN_KEY_CHECKS 変数を 0 に設定し、すべての外部キー制約を無効にします。
重要: 目的のデータを実行した後操作を行う場合は、FOREIGN_KEY_CHECKS を 1:
SET FOREIGN_KEY_CHECKS=1;に戻して外部キー制約を再度有効にすることを忘れないでください。
以上がデータ操作のために MySQL の外部キー制約を一時的に無効にする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。