Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

क्या MySQL foreign_key_checks पूरे डेटाबेस को प्रभावित करता है?


foreign_key_checks: सत्र और वैश्विक स्कोप

foreign_key_checks एक सर्वर सिस्टम वेरिएबल है जो विदेशी कुंजी कंस्ट्रेंट लागू करने को नियंत्रित करता है। इसका दो स्कोप होता है: Session (वर्तमान कनेक्शन) और Global (सभी नए कनेक्शन)।

वेरिएबल गुण

गुणमान
सिस्टम वेरिएबलforeign_key_checks
स्कोपGlobal, Session
डायनामिकहाँ
प्रकारBoolean
डिफ़ॉल्ट मानON (1)

सेट करना

-- वर्तमान सत्र के लिए
SET foreign_key_checks = 0;
SET foreign_key_checks = 1;

-- वैश्विक रूप से (SUPER विशेषाधिकार आवश्यक)
SET GLOBAL foreign_key_checks = 0;
SET GLOBAL foreign_key_checks = 1;

foreign_key_checks = 0 (अक्षम) का प्रभाव

  • DDL कथन प्रभावित:
    • DROP SCHEMA: विदेशी कुंजी द्वारा संदर्भित टेबल वाले स्कीमा को ड्रॉप करने की अनुमति देता है
    • DROP TABLE: अन्य टेबल द्वारा संदर्भित विदेशी कुंजी वाली टेबल को ड्रॉप करने की अनुमति देता है
  • DML कथन प्रभावित:
    • INSERT/UPDATE: अमान्य विदेशी कुंजी मानों की अनुमति देता है
    • LOAD DATA: विदेशी कुंजी जांच को छोड़ देता है
  • मौजूदा डेटा स्कैन नहीं किया जाता: 1 पर सेट करने पर मौजूदा पंक्तियों की पुष्टि नहीं होती

foreign_key_checks = 1 (सक्षम, डिफ़ॉल्ट) का प्रभाव

  • सभी विदेशी कुंजी कंस्ट्रेंट लागू होते हैं
  • मौजूदा डेटा को स्कैन/सत्यापित नहीं करता (केवल नए परिवर्तनों की जांच करता है)
  • foreign_key_checks=0 के दौरान डाली गई पंक्तियाँ असंगत रह सकती हैं

सामान्य उपयोग के मामले

  • बड़े डंप लोड करना: SET foreign_key_checks=0 → लोड → SET foreign_key_checks=1 (तेज़, क्रम स्वतंत्र)
  • स्कीमा पुनर्गठन: टेबल ड्रॉप/पुनर्निर्माण करते समय
  • डेटा माइग्रेशन: जब संदर्भित डेटा बाद में लोड होता है

सावधानी

उत्पादन में सावधानी से उपयोग करें। अक्षम करने से डेटा अखंडता उल्लंघन हो सकते हैं जिन्हें बाद में पता लगाना कठिन होता है। हमेशा पुनः सक्षम करने के बाद डेटा सत्यापित करें:

SELECT * FROM information_schema.TABLE_CONSTRAINTS 
WHERE CONSTRAINT_TYPE = 'FOREIGN KEY';
  1. कमांड लाइन से MySQL डेटाबेस से कैसे कनेक्ट करें? कमांड लाइन से MySQL डेटाबेस से कैसे कनेक्ट करें?

    MySQL कमांड-लाइन क्लाइंट (mysql.exe) से कनेक्ट करें विंडोज कमांड प्रॉम्प्ट से MySQL सर्वर से कनेक्ट करने के लिए mysql क्लाइंट प्रोग्राम का उपयोग करें। चरण-दर-चरण कमांड प्रॉम्प्ट खोलें: Win+R → cmd → Enter MySQL bin डायरेक्टरी में जाएं: cd C:\Program Files\MySQL\MySQL Server 8.0\bin (आपके इंस्टॉल

  1. MySQL डेटाबेस फाइलें कहां संग्रहीत करता है MySQL डेटाबेस फाइलें कहां संग्रहीत करता है

    यह जानने के लिए कि MySQL डेटाबेस फाइलें कहां संग्रहीत करता है, आप वेरिएबल @@datadir का उपयोग कर सकते हैं। क्वेरी इस प्रकार है - select @@datadir; निम्नलिखित आउटपुट पथ प्रदर्शित करता है - +---------------------------------------------+ | @@datadir | +---------------------------------------------+

  1. डेटाबेस में टेबलों की संख्या प्रदर्शित करने का MySQL क्वेरी क्या है? डेटाबेस में टेबलों की संख्या प्रदर्शित करने का MySQL क्वेरी क्या है?

    मान लीजिए, यहाँ मैं WEB डेटाबेस का उपयोग कर रहा हूँ। हमें डेटाबेस WEB में टेबलों की संख्या ज्ञात करनी है। इसके लिए MySQL में INFORMATION_SCHEMA.TABLES का उपयोग करें। टेबलों की संख्या प्रदर्शित करने का क्वेरी निम्न है: mysql> select count(table_name) as TotalNumberOfTablesInWebDatabase -> from