El mensaje de error de SQL Server 245, nivel 16 nos dice que hubo un problema al intentar convertir un valor a un tipo de datos específico.
Obtendrá este error si intenta insertar el tipo de datos incorrecto en una columna.
Para solucionar este problema, asegúrese de que el tipo de datos del valor que intenta insertar coincida con el tipo de columna.
Ejemplo de código de problema
Este es un ejemplo de código que genera este error.
INSERT INTO Orders(OrderId, OrderDate, OrderDesc)
VALUES ('2020-04-02', '2020-04-02', 'Dog food');
Resultado:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value '2020-04-02' to data type int.
En este caso, traté de insertar una fecha en el OrdersId
columna. Podemos asumir por el mensaje de error que esta columna es un int columna, pero debemos verificar eso.
Si observamos la definición de la tabla, podemos ver el OrderId
tipo de columna:
CREATE TABLE Orders (
OrderId int NOT NULL,
OrderDate date NOT NULL,
OrderDesc varchar(255) NOT NULL,
CONSTRAINT PKOrders PRIMARY KEY CLUSTERED(OrderId, OrderDate)
);
Como era de esperar, el OrderId
la columna es un int columna.
Solución
Para resolver este problema, debemos asegurarnos de que estamos insertando el valor correcto. También debemos asegurarnos de que la definición de la tabla sea adecuada para los datos que necesita almacenar. Esto ayudará a reforzar la integridad de los datos de nuestra base de datos.
En nuestro caso, el tipo de datos de la columna es correcto. El problema fue causado por un intento accidental de insertar datos incorrectos.
Por lo tanto, para solucionar el problema, podemos cambiar nuestro INSERT
instrucción para insertar los datos correctos.
INSERT INTO Orders(OrderId, OrderDate, OrderDesc)
VALUES (1, '2020-04-02', 'Dog food');
Resultado:
(1 row affected)
¡Éxito!