जब मैं 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/use-system-variables.html
http://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;
SHOW Variables WHERE Variable_name='foreign_key_checks'; # always shows local variable
वैश्विक चर सेट करते समय, स्थानीय किसी भी मौजूदा कनेक्शन के लिए नहीं बदला गया है। आपको स्थानीय वैरिएबल को भी फिर से कनेक्ट या सेट करना होगा।
शायद अनजाने, MYSQL विदेशी कुंजियों को लागू नहीं करता है जब FOREIGN_KEY_CHECKS फिर से सक्षम हो। इससे विदेशी कुंजी और चेक चालू होने के बावजूद असंगत डेटाबेस बनाना संभव हो जाता है।
यदि आप चाहते हैं कि आपकी विदेशी चाबियां पूरी तरह से सुसंगत रहें, तो आपको चेक करते समय चाबियों को जोड़ना होगा।
# will get you the current local (session based) state.
SHOW Variables WHERE Variable_name='foreign_key_checks';
यदि आपने ग्लोबल सेट नहीं किया, तो केवल आपका सत्र प्रभावित हुआ था।
जब मैं Drupal डेटाबेस को एक नए स्थानीय अपाचे सर्वर पर स्थानांतरित करने की कोशिश कर रहा था (मैं विंडोज़ पर XAMPP का उपयोग कर रहा हूँ) तो वही त्रुटि थी। वास्तव में मुझे इस त्रुटि का अर्थ नहीं पता है, लेकिन नीचे दिए गए चरणों की कोशिश करने के बाद, मैंने त्रुटियों के बिना डेटाबेस को आयात किया। आशा है कि यह मदद कर सकता है:
C: \ xampp \ php \ php.ini पर 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
माईसकल क्वेरी ब्राउज़र का उपयोग करने के मामले में, SET FOREIGN_KEY_CHECKS=0;
संस्करण 1.1.20 में कोई प्रभाव नहीं पड़ता है। हालाँकि, यह Myql क्वेरी ब्राउज़र 1.2.17 पर ठीक काम करता है