回答:
質問で行った方法を設定すると、セッションベースになります。
https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html
これによるとFOREIGN_KEY_CHECKS、スコープは「両方」です。これは、セッションに対して設定できることを意味します。
SET FOREIGN_KEY_CHECKS=0;
またはグローバルに:
SET GLOBAL FOREIGN_KEY_CHECKS=0;
実際にはforeign_key_checks、グローバル変数とローカル(セッションごとの)変数の2つの変数があります。接続時に、セッション変数はグローバル変数の値に初期化されます。
このコマンドSET foreign_key_checksは、セッション変数を変更します。
グローバル変数を変更するには、SET GLOBAL foreign_key_checksまたはを使用しますSET @@global.foreign_key_checks。
次のマニュアルセクションを参照してください
。http://dev.mysql.com/doc/refman/5.7/en/using-system-variables.html
http://dev.mysql.com/doc/refman/5.7/en/server -system-variables.html
foreign_key_checksを設定できず、同じセッションで外部キーの制約を無視することを期待することを意味します。非グローバル変数を設定する必要があります。
Ronが説明したように、ローカルとグローバルの2つの変数があります。ローカル変数は常に使用され、接続時のグローバル変数と同じです。
SET FOREIGN_KEY_CHECKS=0;
SET GLOBAL FOREIGN_KEY_CHECKS=0;
SHOW Variables WHERE Variable_name='foreign_key_checks'; # always shows local variable
GLOBAL変数を設定すると、既存の接続のローカル変数は変更されません。ローカル変数も再接続または設定する必要があります。
おそらく直感的ではないかもしれませんが、MYSQLはFOREIGN_KEY_CHECKSが再度有効にされたときに外部キーを強制しません。これにより、外部キーとチェックがオンになっていても、一貫性のないデータベースを作成できます。
外部キーを完全に一致させたい場合は、チェックをオンにしてキーを追加する必要があります。
Drupalデータベースを新しいローカルapacheサーバーに移行しようとしたときにも同じエラーが発生しました(WindowsマシンでXAMPPを使用しています)。実際にはこのエラーの意味はわかりませんが、以下の手順を試した後、エラーなしでデータベースをインポートしました。これが役立つことを願っています:
C:\ xampp \ php \ php.iniでphp.iniを変更する
max_execution_time = 600
max_input_time = 600
memory_limit = 1024M
post_max_size = 1024M
C:\ xampp \ mysql \ bin \ my.iniでmy.iniを変更する
max_allowed_packet = 1024M
SET FOREIGN_KEY_CHECKS=0;Mysql クエリブラウザーを使用している場合、バージョン1.1.20では何の影響もありません。ただし、Mysqlクエリブラウザー1.2.17では正常に動作します。