Грешка на SQL Server Msg 245, ниво 16 ни казва, че е имало проблем при опит за преобразуване на стойност в конкретен тип данни.
Ще получите тази грешка, ако се опитате да вмъкнете грешен тип данни в колона.
За да отстраните този проблем, уверете се, че типът данни на стойността, която се опитвате да вмъкнете, съвпада с типа на колоната.
Пример за код на проблем
Ето пример за код, който води до тази грешка.
INSERT INTO Orders(OrderId, OrderDate, OrderDesc)
VALUES ('2020-04-02', '2020-04-02', 'Dog food');
Резултат:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value '2020-04-02' to data type int.
В този случай се опитах да вмъкна дата в OrdersId
колона. По съобщението за грешка можем да предположим, че тази колона е int колона, но трябва да проверим това.
Ако погледнем дефиницията на таблицата, можем да видим OrderId
тип колона:
CREATE TABLE Orders (
OrderId int NOT NULL,
OrderDate date NOT NULL,
OrderDesc varchar(255) NOT NULL,
CONSTRAINT PKOrders PRIMARY KEY CLUSTERED(OrderId, OrderDate)
);
Както се очакваше, OrderId
колоната е int колона.
Решение
За да разрешим този проблем, трябва да се уверим, че вмъкваме правилната стойност. Също така трябва да гарантираме, че дефиницията на таблицата е подходяща за данните, които трябва да съхранява. Това ще помогне за налагането на целостта на данните на нашата база данни.
В нашия случай типът данни на колоната е правилен. Проблемът е причинен от случаен опит за въвеждане на грешни данни.
Следователно, за да отстраним проблема, можем да променим нашия INSERT
изявление, за да вмъкнете правилните данни.
INSERT INTO Orders(OrderId, OrderDate, OrderDesc)
VALUES (1, '2020-04-02', 'Dog food');
Резултат:
(1 row affected)
Успех!