Ketika saya menjalankan perintah ini di MySQL:
SET FOREIGN_KEY_CHECKS=0;
Apakah itu memengaruhi seluruh mesin atau hanya transaksi saya saat ini?
Ketika saya menjalankan perintah ini di MySQL:
SET FOREIGN_KEY_CHECKS=0;
Apakah itu memengaruhi seluruh mesin atau hanya transaksi saya saat ini?
Jawaban:
Ini berbasis sesi, ketika mengatur cara Anda melakukannya dalam pertanyaan Anda.
https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html
Menurut ini, FOREIGN_KEY_CHECKS
adalah "Keduanya" untuk ruang lingkup. Ini berarti dapat diatur untuk sesi:
SET FOREIGN_KEY_CHECKS=0;
atau secara global:
SET GLOBAL FOREIGN_KEY_CHECKS=0;
Sebenarnya, ada dua foreign_key_checks
variabel: variabel global dan variabel lokal (per sesi). Setelah koneksi, variabel sesi diinisialisasi ke nilai variabel global.
Perintah SET foreign_key_checks
memodifikasi variabel sesi.
Untuk memodifikasi variabel global, gunakan SET GLOBAL foreign_key_checks
atau SET @@global.foreign_key_checks
.
Lihat bagian manual berikut ini:
http://dev.mysql.com/doc/refman/5.7/en/using-system-variables.html
http://dev.mysql.com/doc/refman/5.7/en/server -system-variable.html
foreign_key_checks
dan dalam sesi yang sama mengharapkannya untuk mengabaikan batasan kunci asing. Anda perlu mengatur variabel non-global.
Seperti yang dijelaskan oleh Ron, ada dua variabel, lokal dan global. Variabel lokal selalu digunakan, dan sama dengan global saat koneksi.
SET FOREIGN_KEY_CHECKS=0;
SET GLOBAL FOREIGN_KEY_CHECKS=0;
SHOW Variables WHERE Variable_name='foreign_key_checks'; # always shows local variable
Saat mengatur variabel GLOBAL, yang lokal tidak berubah untuk koneksi yang ada. Anda perlu menyambung kembali atau mengatur variabel lokal juga.
Mungkin tidak intuitif, MYSQL tidak memberlakukan kunci asing ketika FOREIGN_KEY_CHECKS diaktifkan kembali. Ini memungkinkan untuk membuat database yang tidak konsisten meskipun kunci asing dan cek aktif.
Jika Anda ingin kunci asing Anda sepenuhnya konsisten, Anda perlu menambahkan kunci saat memeriksa aktif.
# will get you the current local (session based) state.
SHOW Variables WHERE Variable_name='foreign_key_checks';
Jika Anda tidak SET GLOBAL, hanya sesi Anda yang terpengaruh.
Saya memiliki kesalahan yang sama ketika saya mencoba untuk memigrasi database Drupal ke server apache lokal baru (saya menggunakan XAMPP pada mesin Windows). Sebenarnya saya tidak tahu arti dari kesalahan ini, tetapi setelah mencoba langkah-langkah di bawah ini, saya mengimpor database tanpa kesalahan. Semoga ini bisa membantu:
Mengubah php.ini di C: \ xampp \ php \ php.ini
max_execution_time = 600
max_input_time = 600
memory_limit = 1024M
post_max_size = 1024M
Mengubah my.ini di C: \ xampp \ mysql \ bin \ my.ini
max_allowed_packet = 1024M
Dalam hal menggunakan browser permintaan Mysql, SET FOREIGN_KEY_CHECKS=0;
tidak memiliki dampak apa pun di versi 1.1.20. Namun, itu berfungsi dengan baik di browser permintaan Mysql 1.2.17