sql >> Base de Datos >  >> RDS >> Mysql

Solucione el "ERROR 1136 (21S01):el recuento de columnas no coincide con el recuento de valores en la fila 1" al insertar datos en MySQL

Uno de los mensajes de error más comunes en MySQL es el siguiente:“ERROR 1136 (21S01):el recuento de columnas no coincide con el recuento de valores en la fila 1 “.

Este error generalmente ocurre cuando intenta insertar datos en una tabla, pero la cantidad de columnas que intenta insertar no coincide con la cantidad de columnas en la tabla.

En otras palabras, está tratando de insertar demasiadas columnas o no tiene suficientes columnas.

Para solucionar este problema, asegúrese de insertar el número correcto de columnas en la tabla.

Alternativamente, puede nombrar las columnas en su INSERT para que MySQL sepa en qué columnas deben insertarse sus datos.

El error también puede ocurrir si pasa el número incorrecto de columnas a un ROW() cláusula cuando se usa VALUES declaración.

Ejemplo de error

Supongamos que tenemos la siguiente tabla:

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

El siguiente código causará el error:

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

Resultado:

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

En este caso, traté de insertar datos de cuatro columnas en una tabla que solo tiene tres columnas.

Obtendremos el mismo error si intentamos insertar muy pocas columnas:

INSERT INTO t1 VALUES (7, 8);

Resultado:

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

Solución 1

La solución obvia es insertar el número correcto de filas. Por lo tanto, podríamos reescribir nuestro código de la siguiente manera:

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

Resultado:

Query OK, 1 row affected (0.00 sec)

Solución 2

Otra forma de hacerlo es nombrar explícitamente las columnas para las que queremos insertar datos. Esta técnica se puede utilizar para insertar menos columnas de las que hay en la tabla.

Ejemplo:

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

Resultado:

Query OK, 1 row affected (0.00 sec)

Este método puede generar un error diferente si hay restricciones que requieren que se pase un valor para esa columna (por ejemplo, si la tabla tiene un NOT NULL restricción en esa columna). Por lo tanto, deberá asegurarse de cumplir con cualquier restricción en la columna al hacer esto.