Error 1136: Column count doesn't match value count
यह एरर तब आता है जब INSERT स्टेटमेंट में दिए गए वैल्यूज की संख्या टेबल के कॉलम्स की संख्या से मेल नहीं खाती, खासकर जब AUTO_INCREMENT कॉलम हो।
एरर उदाहरण
INSERT INTO DemoTable1353 VALUES('Chris', 23);
ERROR 1136 (21S01): Column count doesn't match value count at row 1
कारण
टेबल में 3 कॉलम हैं (Id, Name, Age) लेकिन केवल 2 वैल्यू दिए गए हैं।
सही टेबल स्ट्रक्चर
CREATE TABLE DemoTable1353 (
Id INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(20),
Age INT,
PRIMARY KEY(Id)
);
समाधान 1: कॉलम नाम स्पेसिफाई करें (अनुशंसित)
INSERT INTO DemoTable1353(Name, Age) VALUES('Chris', 23);
INSERT INTO DemoTable1353(Name, Age) VALUES('David', 21);
INSERT INTO DemoTable1353(Name, Age) VALUES('Bob', 24);
INSERT INTO DemoTable1353(Name, Age) VALUES('John', 47);
समाधान 2: NULL या 0 देकर ऑटो जनरेट होने दें
INSERT INTO DemoTable1353 VALUES(NULL, 'Chris', 23); INSERT INTO DemoTable1353 VALUES(0, 'David', 21); INSERT INTO DemoTable1353 VALUES(DEFAULT, 'Bob', 24);
आउटपुट
SELECT * FROM DemoTable1353;
+----+-------+------+ | Id | Name | Age | +----+-------+------+ | 1 | Chris | 23 | | 2 | David | 21 | | 3 | Bob | 24 | | 4 | John | 47 | +----+-------+------+
बेस्ट प्रैक्टिस
- हमेशा कॉलम नाम लिखें:
INSERT INTO table (col1, col2) VALUES(...) - स्कीमा बदलने पर क्वेरी टूटती नहीं
- पढ़ने में आसान और मेंटेन करने योग्य
AUTO_INCREMENTकॉलम को छोड़ दें
एकाधिक रो इन्सर्ट (कॉलम नाम के साथ)
INSERT INTO DemoTable1353(Name, Age) VALUES
('Alice', 30),
('Bob', 25),
('Carol', 28);
अन्य सामान्य कारण
- ट्रिगर द्वारा कॉलम जोड़ा गया हो
- व्यू में इन्सर्ट करने की कोशिश (सभी व्यू अपडेटेबल नहीं)
- कॉलम काउंट गलत गिना गया हो