sql >> Base de Datos >  >> RDS >> MariaDB

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

Si recibe un error que dice algo como "ERROR 1136 (21S01):el recuento de columnas no coincide con el recuento de valores en la fila ” en MariaDB, probablemente se deba a que especificó un número incorrecto de expresiones para el número de columnas en la columna al intentar insertar datos en una tabla.

En otras palabras, está intentando insertar demasiadas columnas o no las suficientes.

Para solucionarlo, ajusta tu INSERT instrucción para insertar el número correcto de valores en la tabla.

También puede nombrar las columnas en su INSERT para que MariaDB sepa en qué columnas debe insertarse cada expresión.

Ejemplo de error

Supongamos que tenemos la siguiente tabla:

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

El siguiente código causará el error:

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

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 Pets VALUES ( 3, 'Wag' );

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 Pets VALUES ( 3, 'Wag', 'Dog' );

Resultado:

Query OK, 1 row affected (0.010 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 Pets ( PetId, PetName ) VALUES ( 3, 'Wag' );

Resultado:

Query OK, 1 row affected (0.005 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.