Mysql
 sql >> Base de données >  >> RDS >> Mysql

Correction de "ERROR 1136 (21S01):Le nombre de colonnes ne correspond pas au nombre de valeurs à la ligne 1" lors de l'insertion de données dans MySQL

L'un des messages d'erreur les plus courants dans MySQL ressemble à ceci :"ERREUR 1136 (21S01) :le nombre de colonnes ne correspond pas au nombre de valeurs à la ligne 1 ".

Cette erreur se produit généralement lorsque vous essayez d'insérer des données dans une table, mais le nombre de colonnes que vous essayez d'insérer ne correspond pas au nombre de colonnes dans la table.

En d'autres termes, soit vous essayez d'insérer trop de colonnes, soit pas assez de colonnes.

Pour résoudre ce problème, assurez-vous d'insérer le nombre correct de colonnes dans le tableau.

Alternativement, vous pouvez nommer les colonnes dans votre INSERT afin que MySQL sache dans quelles colonnes vos données doivent être insérées.

L'erreur peut également se produire si vous transmettez le mauvais nombre de colonnes à un ROW() clause lors de l'utilisation de VALUES déclaration.

Exemple d'erreur

Supposons que nous ayons le tableau suivant :

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

Le code suivant provoquera l'erreur :

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

Résultat :

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

Dans ce cas, j'ai essayé d'insérer des données pour quatre colonnes dans une table qui n'a que trois colonnes.

Nous aurons la même erreur si nous essayons d'insérer trop peu de colonnes :

INSERT INTO t1 VALUES (7, 8);

Résultat :

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

Solution 1

La solution évidente consiste à insérer le nombre correct de lignes. Par conséquent, nous pourrions réécrire notre code comme suit :

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

Résultat :

Query OK, 1 row affected (0.00 sec)

Solution 2

Une autre façon de procéder consiste à nommer explicitement les colonnes pour lesquelles nous voulons insérer des données. Cette technique peut être utilisée pour insérer moins de colonnes qu'il n'y en a dans le tableau.

Exemple :

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

Résultat :

Query OK, 1 row affected (0.00 sec)

Cette méthode peut entraîner une erreur différente s'il existe des contraintes qui nécessitent qu'une valeur soit transmise pour cette colonne (par exemple, si la table a un NOT NULL contrainte sur cette colonne). Par conséquent, vous devrez vous assurer que vous respectez toutes les contraintes sur la colonne lors de cette opération.