sql >> Database teknologi >  >> RDS >> MariaDB

Ret "FEJL 1136 (21S01):Kolonneantal stemmer ikke overens med værdiantallet i række 1", når du indsætter data i MariaDB

Hvis du oplever, at du får en fejlmeddelelse, der lyder noget som "FEJL 1136 (21S01):Kolonneantal stemmer ikke overens med værdiantallet i rækken ” i MariaDB er det sandsynligvis fordi du har angivet det forkerte antal udtryk for antallet af kolonner i kolonnen, når du forsøger at indsætte data i en tabel.

Med andre ord, du forsøger at indsætte for mange kolonner eller ikke nok kolonner.

For at rette det skal du justere din INSERT sætning for at indsætte det korrekte antal værdier i tabellen.

Du kan også navngive kolonnerne i din INSERT sætning, så MariaDB ved, hvilke kolonner hvert udtryk skal indsættes i.

Eksempel på fejl

Antag, at vi har følgende tabel:

+-------+---------+---------+
| PetId | PetName | PetType |
+-------+---------+---------+
|     1 | Fluffy  | Cat     |
|     2 | Tweet   | Bird    |
+-------+---------+---------+

Følgende kode vil forårsage fejlen:

INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' );

Resultat:

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

I dette tilfælde forsøgte jeg at indsætte data for fire kolonner i en tabel, der kun har tre kolonner.

Vi får den samme fejl, hvis vi forsøger at indsætte for få kolonner:

INSERT INTO Pets VALUES ( 3, 'Wag' );

Resultat:

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

Løsning 1

Den oplagte løsning er at indsætte det korrekte antal rækker. Derfor kunne vi omskrive vores kode som følger:

INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog' );

Resultat:

Query OK, 1 row affected (0.010 sec)

Løsning 2

En anden måde at gøre det på er at navngive de kolonner, som vi ønsker at indsætte data for. Denne teknik kan bruges til at indsætte færre kolonner end i tabellen.

Eksempel:

INSERT INTO Pets ( PetId, PetName ) VALUES ( 3, 'Wag' );

Resultat:

Query OK, 1 row affected (0.005 sec)

Denne metode kan resultere i en anden fejl, hvis der er nogen begrænsninger, der kræver, at en værdi sendes til den kolonne (f.eks. hvis tabellen har en NOT NULL begrænsning på den kolonne). Derfor skal du sikre dig, at du overholder eventuelle begrænsninger på kolonnen, når du gør dette.


  1. Sådan kører du SHOW LOCALES i MariaDB

  2. Brugerdefinerede numeriske formatstrenge understøttet af FORMAT() i SQL Server

  3. TransactSQL for at køre et andet TransactSQL-script

  4. Sådan slipper du en begrænsning i SQL Server (T-SQL)