Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Behebung von „ERROR 1136 (21S01):Column count does not match value count at row 1“ beim Einfügen von Daten in MySQL

Eine der häufigeren Fehlermeldungen in MySQL lautet wie folgt:„ERROR 1136 (21S01):Column count does not match value count at row 1 “.

Dieser Fehler tritt normalerweise auf, wenn Sie versuchen, Daten in eine Tabelle einzufügen, aber die Anzahl der einzufügenden Spalten nicht mit der Anzahl der Spalten in der Tabelle übereinstimmt.

Mit anderen Worten, Sie versuchen entweder, zu viele Spalten einzufügen, oder nicht genug Spalten.

Um dieses Problem zu beheben, stellen Sie sicher, dass Sie die richtige Anzahl von Spalten in die Tabelle einfügen.

Alternativ können Sie die Spalten in Ihrem INSERT benennen -Anweisung, damit MySQL weiß, in welche Spalten Ihre Daten eingefügt werden müssen.

Der Fehler kann auch auftreten, wenn Sie die falsche Anzahl von Spalten an ein ROW() übergeben -Klausel bei Verwendung von VALUES Aussage.

Fehlerbeispiel

Angenommen, wir haben die folgende Tabelle:

+----------+----------+----------+
| column_0 | column_1 | column_2 |
+----------+----------+----------+
|        1 |        2 |        3 |
|        4 |        5 |        6 |
+----------+----------+----------+

Der folgende Code verursacht den Fehler:

INSERT INTO t1 VALUES (7, 8, 9, 10);

Ergebnis:

ERROR 1136 (21S01): Column count doesn't match value count at row 1

In diesem Fall habe ich versucht, Daten für vier Spalten in eine Tabelle einzufügen, die nur drei Spalten hat.

Wir erhalten denselben Fehler, wenn wir versuchen, zu wenige Spalten einzufügen:

INSERT INTO t1 VALUES (7, 8);

Ergebnis:

ERROR 1136 (21S01): Column count doesn't match value count at row 1

Lösung 1

Die offensichtliche Lösung besteht darin, die richtige Anzahl von Zeilen einzufügen. Daher könnten wir unseren Code wie folgt umschreiben:

INSERT INTO t1 VALUES (7, 8, 9);

Ergebnis:

Query OK, 1 row affected (0.00 sec)

Lösung 2

Eine andere Möglichkeit besteht darin, die Spalten, für die wir Daten einfügen möchten, explizit zu benennen. Diese Technik kann verwendet werden, um weniger Spalten einzufügen, als in der Tabelle vorhanden sind.

Beispiel:

INSERT INTO t1 (column_0, column_1) VALUES (7, 8);

Ergebnis:

Query OK, 1 row affected (0.00 sec)

Diese Methode kann zu einem anderen Fehler führen, wenn es Einschränkungen gibt, die erfordern, dass ein Wert für diese Spalte übergeben wird (z. B. wenn die Tabelle einen NOT NULL hat Einschränkung für diese Spalte). Daher müssen Sie sicherstellen, dass Sie dabei alle Einschränkungen für die Spalte einhalten.