เมื่อฉันรันคำสั่งนี้ใน MySQL:
SET FOREIGN_KEY_CHECKS=0;
ส่งผลกระทบต่อเอ็นจิ้นทั้งหมดหรือเป็นเพียงธุรกรรมปัจจุบันของฉัน
เมื่อฉันรันคำสั่งนี้ใน MySQL:
SET FOREIGN_KEY_CHECKS=0;
ส่งผลกระทบต่อเอ็นจิ้นทั้งหมดหรือเป็นเพียงธุรกรรมปัจจุบันของฉัน
คำตอบ:
มันขึ้นอยู่กับเซสชั่นเมื่อกำหนดวิธีการที่คุณทำในคำถามของคุณ
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
ตัวแปรคือตัวแปรทั่วโลกและตัวแปรท้องถิ่น (ต่อเซสชั่น) เมื่อเชื่อมต่อตัวแปรเซสชันจะเริ่มต้นเป็นค่าของตัวแปรทั่วโลก
คำสั่ง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 อธิบายไว้มีสองตัวแปรคือระดับท้องถิ่นและระดับโลก ตัวแปรโลคัลถูกใช้เสมอและเหมือนกับโกลบอลเมื่อเชื่อมต่อ
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 อีกครั้ง สิ่งนี้ทำให้สามารถสร้างฐานข้อมูลที่ไม่สอดคล้องกันแม้ว่าจะมีการเปิดคีย์ต่างประเทศและการตรวจสอบ
หากคุณต้องการให้คีย์ต่างประเทศของคุณสอดคล้องกันอย่างสมบูรณ์คุณจะต้องเพิ่มคีย์ขณะที่เปิดใช้งาน
# will get you the current local (session based) state.
SHOW Variables WHERE Variable_name='foreign_key_checks';
หากคุณไม่ได้ตั้งค่าโกลบอลเซสชันของคุณจะได้รับผลกระทบเท่านั้น
ฉันมีข้อผิดพลาดเดียวกันเมื่อฉันพยายามโยกย้ายฐานข้อมูล Drupal ไปยังเซิร์ฟเวอร์ apache ท้องถิ่นใหม่ (ฉันใช้ XAMPP บนเครื่อง Windows) จริงๆแล้วฉันไม่ทราบความหมายของข้อผิดพลาดนี้ แต่หลังจากลองทำตามขั้นตอนด้านล่างแล้วฉันนำเข้าฐานข้อมูลโดยไม่มีข้อผิดพลาด หวังว่านี่จะช่วยได้:
การเปลี่ยน php.ini ที่ C: \ xampp \ php \ php.ini
max_execution_time = 600
max_input_time = 600
memory_limit = 1024M
post_max_size = 1024M
เปลี่ยน my.ini เป็น C: \ xampp \ mysql \ bin \ my.ini
max_allowed_packet = 1024M
ในกรณีที่ใช้เบราว์เซอร์แบบสอบถาม Mysql SET FOREIGN_KEY_CHECKS=0;
จะไม่มีผลกระทบใด ๆ ในรุ่น 1.1.20 อย่างไรก็ตามมันทำงานได้ดีบนเบราว์เซอร์แบบสอบถาม Mysql 1.2.17