Wenn Sie feststellen, dass Sie eine Fehlermeldung wie „ERROR 1136 (21S01):Column count does not match value count at row“ erhalten. “ in MariaDB, liegt es wahrscheinlich daran, dass Sie beim Versuch, Daten in eine Tabelle einzufügen, die falsche Anzahl von Ausdrücken für die Anzahl der Spalten in der Spalte angegeben haben.
Mit anderen Worten, Sie versuchen, zu viele oder zu wenige Spalten einzufügen.
Um das Problem zu beheben, passen Sie Ihr INSERT
an -Anweisung, um die richtige Anzahl von Werten in die Tabelle einzufügen.
Sie können die Spalten auch in Ihrem INSERT
benennen -Anweisung, damit MariaDB weiß, in welche Spalten jeder Ausdruck eingefügt werden muss.
Fehlerbeispiel
Angenommen, wir haben die folgende Tabelle:
+-------+---------+---------+ | PetId | PetName | PetType | +-------+---------+---------+ | 1 | Fluffy | Cat | | 2 | Tweet | Bird | +-------+---------+---------+
Der folgende Code verursacht den Fehler:
INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' );
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 Pets VALUES ( 3, 'Wag' );
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 Pets VALUES ( 3, 'Wag', 'Dog' );
Ergebnis:
Query OK, 1 row affected (0.010 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 Pets ( PetId, PetName ) VALUES ( 3, 'Wag' );
Ergebnis:
Query OK, 1 row affected (0.005 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.