Chyba serveru SQL Msg 245, úroveň 16 nám říká, že při pokusu o převod hodnoty na konkrétní datový typ došlo k problému.
Tato chyba se zobrazí, pokud se pokusíte do sloupce vložit nesprávný datový typ.
Chcete-li tento problém vyřešit, ujistěte se, že datový typ hodnoty, kterou se pokoušíte vložit, odpovídá typu sloupce.
Příklad kódu problému
Zde je příklad kódu, který vede k této chybě.
INSERT INTO Orders(OrderId, OrderDate, OrderDesc)
VALUES ('2020-04-02', '2020-04-02', 'Dog food');
Výsledek:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value '2020-04-02' to data type int.
V tomto případě jsem se pokusil vložit datum do OrdersId
sloupec. Podle chybové zprávy můžeme předpokládat, že tento sloupec je int sloupec, ale měli bychom to ověřit.
Pokud se podíváme na definici tabulky, můžeme vidět OrderId
typ sloupce:
CREATE TABLE Orders (
OrderId int NOT NULL,
OrderDate date NOT NULL,
OrderDesc varchar(255) NOT NULL,
CONSTRAINT PKOrders PRIMARY KEY CLUSTERED(OrderId, OrderDate)
);
Podle očekávání OrderId
sloupec je int sloupec.
Řešení
Abychom tento problém vyřešili, musíme se ujistit, že vkládáme správnou hodnotu. Musíme také zajistit, aby definice tabulky byla vhodná pro data, která potřebuje ukládat. To pomůže zajistit integritu dat naší databáze.
V našem případě je datový typ sloupce správný. Problém byl způsoben náhodným pokusem o vložení nesprávných dat.
Abychom problém vyřešili, můžeme změnit naše INSERT
příkaz k vložení správných dat.
INSERT INTO Orders(OrderId, OrderDate, OrderDesc)
VALUES (1, '2020-04-02', 'Dog food');
Výsledek:
(1 row affected)
Úspěch!