यदि आपको कोई त्रुटि मिलती है जिसमें लिखा है "INSERT में लक्ष्य स्तंभों की तुलना में अधिक अभिव्यक्तियां हैं " पोस्टग्रेज़ में डेटा डालने का प्रयास करते समय, ऐसा इसलिए होता है क्योंकि आप तालिका में वास्तव में शामिल तालिका से अधिक कॉलम में डेटा डालने का प्रयास कर रहे हैं।
उदाहरण के लिए, हो सकता है कि आप केवल तीन स्तंभों वाली तालिका में चार व्यंजक सम्मिलित करने का प्रयास कर रहे हों।
ठीक करने के लिए, अपने INSERT
. से अतिरिक्त व्यंजकों को हटा दें बयान। दूसरे शब्दों में, सुनिश्चित करें कि आप सही संख्या में कॉलम डाल रहे हैं।
त्रुटि का उदाहरण
मान लीजिए हमारे पास इस तरह की एक टेबल है:
+-------+---------+---------+ | petid | petname | pettype | +-------+---------+---------+ | 1 | Fluffy | Cat | | 2 | Tweet | Bird | +-------+---------+---------+
उस तालिका में तीन स्तंभ हैं।
अब, मान लीजिए हम एक और पंक्ति सम्मिलित करना चाहते हैं।
त्रुटि उत्पन्न करने का तरीका यहां दिया गया है:
INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' );
परिणाम:
ERROR: INSERT has more expressions than target columns LINE 1: INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' ); ^
यहाँ, मैंने एक तालिका में चार व्यंजक सम्मिलित करने का प्रयास किया है जिसमें केवल तीन स्तंभ हैं।
समाधान
समाधान आसान है। अतिरिक्त अभिव्यक्ति निकालें:
INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog' );
यहां, मैंने अंतिम अभिव्यक्ति को हटा दिया (Brown
) VALUES
. से सूची। इसके परिणामस्वरूप पंक्ति को बिना किसी त्रुटि के सम्मिलित किया गया।
या, यह सुनिश्चित करने के लिए कि आपने अनजाने में गलत कॉलम में डेटा सम्मिलित नहीं किया है, आप प्रत्येक कॉलम को स्पष्ट रूप से बता सकते हैं:
INSERT INTO Pets ( PetId, PetName, PetType )
VALUES ( 1, 'Wag', 'Dog' );
उपरोक्त कथनों में से किसी एक को चलाने के बाद, तालिका अब इस तरह दिखती है:
SELECT * FROM Pets;
परिणाम:
+-------+---------+---------+ | petid | petname | pettype | +-------+---------+---------+ | 1 | Fluffy | Cat | | 2 | Tweet | Bird | | 3 | Wag | Dog | +-------+---------+---------+
हमने सफलतापूर्वक पंक्ति को तालिका में सम्मिलित कर लिया है।