MySQL में अधिक सामान्य त्रुटि संदेशों में से एक इस प्रकार है:"त्रुटि 1136 (21S01):कॉलम गणना पंक्ति 1 पर मान गणना से मेल नहीं खाती ".
यह त्रुटि आमतौर पर तब होती है जब आप किसी तालिका में डेटा सम्मिलित करने का प्रयास कर रहे होते हैं, लेकिन आप जितने स्तंभ सम्मिलित करने का प्रयास कर रहे हैं, वह तालिका में स्तंभों की संख्या से मेल नहीं खाते।
दूसरे शब्दों में, आप या तो बहुत अधिक स्तंभ सम्मिलित करने का प्रयास कर रहे हैं, या पर्याप्त स्तंभ नहीं डालने का प्रयास कर रहे हैं।
इस समस्या को ठीक करने के लिए, सुनिश्चित करें कि आप तालिका में स्तंभों की सही संख्या सम्मिलित कर रहे हैं।
वैकल्पिक रूप से, आप अपने INSERT
. में कॉलम को नाम दे सकते हैं स्टेटमेंट ताकि MySQL को पता चले कि आपके डेटा को किन कॉलम में डालने की जरूरत है।
त्रुटि तब भी हो सकती है जब आप कॉलम की गलत संख्या को ROW()
. पर पास करते हैं VALUES
. का उपयोग करते समय खंड बयान।
त्रुटि का उदाहरण
मान लीजिए हमारे पास निम्न तालिका है:
+----------+----------+----------+ | column_0 | column_1 | column_2 | +----------+----------+----------+ | 1 | 2 | 3 | | 4 | 5 | 6 | +----------+----------+----------+
निम्न कोड त्रुटि उत्पन्न करेगा:
INSERT INTO t1 VALUES (7, 8, 9, 10);
परिणाम:
ERROR 1136 (21S01): Column count doesn't match value count at row 1
इस मामले में, मैंने एक तालिका में चार स्तंभों के लिए डेटा सम्मिलित करने का प्रयास किया जिसमें केवल तीन स्तंभ हैं।
यदि हम बहुत कम कॉलम डालने का प्रयास करते हैं तो हमें वही त्रुटि मिलेगी:
INSERT INTO t1 VALUES (7, 8);
परिणाम:
ERROR 1136 (21S01): Column count doesn't match value count at row 1
समाधान 1
स्पष्ट समाधान पंक्तियों की सही संख्या सम्मिलित करना है। इसलिए, हम अपना कोड इस प्रकार फिर से लिख सकते हैं:
INSERT INTO t1 VALUES (7, 8, 9);
परिणाम:
Query OK, 1 row affected (0.00 sec)
समाधान 2
इसे करने का दूसरा तरीका उन कॉलमों को स्पष्ट रूप से नाम देना है जिनके लिए हम डेटा सम्मिलित करना चाहते हैं। इस तकनीक का उपयोग तालिका की तुलना में कम कॉलम सम्मिलित करने के लिए किया जा सकता है।
उदाहरण:
INSERT INTO t1 (column_0, column_1) VALUES (7, 8);
परिणाम:
Query OK, 1 row affected (0.00 sec)
इस पद्धति के परिणामस्वरूप एक अलग त्रुटि हो सकती है यदि कोई बाधा है जिसके लिए उस कॉलम के लिए मान को पारित करने की आवश्यकता होती है (उदाहरण के लिए, यदि तालिका में NOT NULL
है। उस कॉलम पर बाधा)। इसलिए, आपको यह सुनिश्चित करना होगा कि ऐसा करते समय आप कॉलम पर किसी भी बाधा का पालन कर रहे हैं।