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

MySQL Error 1136: कॉलम काउंट मैच नहीं करता - कैसे ठीक करें?

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   |
+----+-------+------+

बेस्ट प्रैक्टिस

  1. हमेशा कॉलम नाम लिखें: INSERT INTO table (col1, col2) VALUES(...)
  2. स्कीमा बदलने पर क्वेरी टूटती नहीं
  3. पढ़ने में आसान और मेंटेन करने योग्य
  4. AUTO_INCREMENT कॉलम को छोड़ दें

एकाधिक रो इन्सर्ट (कॉलम नाम के साथ)

INSERT INTO DemoTable1353(Name, Age) VALUES
('Alice', 30),
('Bob', 25),
('Carol', 28);

अन्य सामान्य कारण

  • ट्रिगर द्वारा कॉलम जोड़ा गया हो
  • व्यू में इन्सर्ट करने की कोशिश (सभी व्यू अपडेटेबल नहीं)
  • कॉलम काउंट गलत गिना गया हो
  1. - MySQL कॉलम में प्रत्येक पंक्ति के समान मान की गिनती करें?

    प्रत्येक पंक्ति के समान मान की गिनती के लिए COUNT(*) का उपयोग GROUP BY क्लॉज के साथ करें। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable1818 ( Id int, Name varchar(20) ); Query OK, 0 rows affected (0.00 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> ins

  1. - MySQL में ENUM कॉलम से केवल 'NO' मानों की गणना करें

    MySQL में ENUM कॉलम पर सशर्त गणना के लिए बूलियन अभिव्यक्ति का योग (SUM(condition)) उपयोग कर सकते हैं। MySQL में TRUE = 1 और FALSE = 0 होता है। टेबल बनाएं mysql> CREATE TABLE DemoTable1829 ( Name VARCHAR(20), isTopper ENUM(YES,NO) ); डेटा डालें mysql> INSERT INTO DemoTable1829 VALUES(

  1. - MySQL में GROUP BY HAVING और IN से एकाधिक मान शर्त पूरी करने वाली पंक्तियाँ चुनें

    किसी कॉलम (जैसे Subject) में एकाधिक विशिष्ट मान (MySQL, MongoDB) **दोनों** रखने वाले समूह (FirstName) खोजने के लिए IN फ़िल्टर + GROUP BY + HAVING COUNT(*) = N का उपयोग करें। टेबल बनाएं mysql> CREATE TABLE DemoTable1885 (FirstName VARCHAR(20), Subject VARCHAR(50)); डेटा डालें mysql> INSERT IN