SQL Server-foutbericht 245, niveau 16 vertelt ons dat er een probleem was bij het converteren van een waarde naar een specifiek gegevenstype.
U krijgt deze foutmelding als u het verkeerde gegevenstype in een kolom probeert in te voegen.
Om dit probleem op te lossen, moet u ervoor zorgen dat het gegevenstype van de waarde die u probeert in te voegen, overeenkomt met het type van de kolom.
Voorbeeld van probleemcode
Hier is een voorbeeld van code die in deze fout resulteert.
INSERT INTO Orders(OrderId, OrderDate, OrderDesc)
VALUES ('2020-04-02', '2020-04-02', 'Dog food');
Resultaat:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value '2020-04-02' to data type int.
In dit geval heb ik geprobeerd een datum in te voegen in de OrdersId
kolom. Aan de hand van de foutmelding kunnen we aannemen dat deze kolom een int . is kolom, maar dat moeten we verifiëren.
Als we naar de tabeldefinitie kijken, zien we de OrderId
kolomtype:
CREATE TABLE Orders (
OrderId int NOT NULL,
OrderDate date NOT NULL,
OrderDesc varchar(255) NOT NULL,
CONSTRAINT PKOrders PRIMARY KEY CLUSTERED(OrderId, OrderDate)
);
Zoals verwacht, de OrderId
kolom is een int kolom.
Oplossing
Om dit probleem op te lossen, moeten we ervoor zorgen dat we de juiste waarde invoeren. We moeten er ook voor zorgen dat de tabeldefinitie geschikt is voor de gegevens die moeten worden opgeslagen. Dit helpt de gegevensintegriteit van onze database af te dwingen.
In ons geval is het gegevenstype van de kolom correct. Het probleem werd veroorzaakt door per ongeluk te proberen de verkeerde gegevens in te voeren.
Daarom kunnen we, om het probleem op te lossen, onze INSERT
. wijzigen statement om de juiste gegevens in te voeren.
INSERT INTO Orders(OrderId, OrderDate, OrderDesc)
VALUES (1, '2020-04-02', 'Dog food');
Resultaat:
(1 row affected)
Succes!