कॉलम-मान गिनती बेमेल एरर का समाधान
यह एरर तब आता है जब INSERT में मानों की संख्या टेबल के कॉलम्स की संख्या से मेल नहीं खाती।
एरर उदाहरण
mysql> create table errorDemo (
-> User_Id int NOT NULL AUTO_INCREMENT,
-> User_Name varchar(20),
-> PRIMARY KEY(User_Id)
-> );
mysql> INSERT INTO errorDemo VALUES('John');
ERROR 1136 (21S01): Column count doesn't match value count at row 1
कारण
टेबल में 2 कॉलम हैं (User_Id, User_Name) लेकिन केवल 1 मान दिया गया। User_Id ऑटो-इन्क्रीमेंट है, इसलिए इसे निर्दिष्ट नहीं करना चाहिए।
समाधान: कॉलम नाम निर्दिष्ट करें
INSERT INTO yourTableName (column1, column2, ...) VALUES (value1, value2, ...);
सही क्वेरी
mysql> INSERT INTO errorDemo (User_Name) VALUES ('John');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO errorDemo (User_Name) VALUES ('Carol');
mysql> INSERT INTO errorDemo (User_Name) VALUES ('Sam');
परिणाम
+---------+-----------+ | User_Id | User_Name | +---------+-----------+ | 1 | John | | 2 | Carol | | 3 | Sam | +---------+-----------+
बेस्ट प्रैक्टिस
- हमेशा कॉलम नाम सूचीबद्ध करें:
INSERT INTO table (col1, col2) VALUES (val1, val2) - ऑटो-इन्क्रीमेंट कॉलम छोड़ दें
- डिफ़ॉल्ट मान वाले कॉलम छोड़ सकते हैं
- कोड रखरखाव आसान होता है (कॉलम क्रम बदलने पर टूटता नहीं)