SQL Server-fejlmeddelelse 245, niveau 16 fortæller os, at der var et problem under forsøg på at konvertere en værdi til en bestemt datatype.
Du får denne fejl, hvis du forsøger at indsætte den forkerte datatype i en kolonne.
For at løse dette problem skal du sørge for, at datatypen for den værdi, du forsøger at indsætte, stemmer overens med kolonnens type.
Eksempel på problemkode
Her er et eksempel på kode, der resulterer i denne fejl.
INSERT INTO Orders(OrderId, OrderDate, OrderDesc)
VALUES ('2020-04-02', '2020-04-02', 'Dog food');
Resultat:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value '2020-04-02' to data type int.
I dette tilfælde forsøgte jeg at indsætte en dato i OrdersId
kolonne. Vi kan ved fejlmeddelelsen antage, at denne kolonne er en int kolonne, men det bør vi bekræfte.
Hvis vi ser på tabeldefinitionen, kan vi se OrderId
kolonnens type:
CREATE TABLE Orders (
OrderId int NOT NULL,
OrderDate date NOT NULL,
OrderDesc varchar(255) NOT NULL,
CONSTRAINT PKOrders PRIMARY KEY CLUSTERED(OrderId, OrderDate)
);
Som forventet, OrderId
kolonne er en int kolonne.
Løsning
For at løse dette problem skal vi sikre os, at vi indsætter den korrekte værdi. Vi skal også sikre, at tabeldefinitionen er passende for de data, den skal lagre. Dette vil hjælpe med at håndhæve dataintegriteten i vores database.
I vores tilfælde er kolonnens datatype korrekt. Problemet var forårsaget af, at du ved et uheld forsøgte at indsætte de forkerte data.
Derfor kan vi ændre vores INSERT
for at løse problemet sætning for at indsætte de korrekte data.
INSERT INTO Orders(OrderId, OrderDate, OrderDesc)
VALUES (1, '2020-04-02', 'Dog food');
Resultat:
(1 row affected)
Succes!