Il messaggio di errore SQL Server 245, livello 16 indica che si è verificato un problema durante il tentativo di convertire un valore in un tipo di dati specifico.
Riceverai questo errore se provi a inserire il tipo di dati sbagliato in una colonna.
Per risolvere questo problema, assicurati che il tipo di dati del valore che stai cercando di inserire corrisponda al tipo di colonna.
Esempio di codice problema
Ecco un esempio di codice che genera questo errore.
INSERT INTO Orders(OrderId, OrderDate, OrderDesc)
VALUES ('2020-04-02', '2020-04-02', 'Dog food');
Risultato:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value '2020-04-02' to data type int.
In questo caso ho provato a inserire una data nel OrdersId
colonna. Possiamo presumere dal messaggio di errore che questa colonna sia un int colonna, ma dovremmo verificarlo.
Se osserviamo la definizione della tabella, possiamo vedere OrderId
tipo di colonna:
CREATE TABLE Orders (
OrderId int NOT NULL,
OrderDate date NOT NULL,
OrderDesc varchar(255) NOT NULL,
CONSTRAINT PKOrders PRIMARY KEY CLUSTERED(OrderId, OrderDate)
);
Come previsto, l'OrderId
la colonna è un int colonna.
Soluzione
Per risolvere questo problema, dobbiamo assicurarci di inserire il valore corretto. Dobbiamo anche garantire che la definizione della tabella sia appropriata per i dati che deve archiviare. Ciò contribuirà a rafforzare l'integrità dei dati del nostro database.
Nel nostro caso, il tipo di dati della colonna è corretto. Il problema è stato causato dal tentativo accidentale di inserire i dati sbagliati.
Pertanto, per risolvere il problema, possiamo modificare il nostro INSERT
dichiarazione per inserire i dati corretti.
INSERT INTO Orders(OrderId, OrderDate, OrderDesc)
VALUES (1, '2020-04-02', 'Dog food');
Risultato:
(1 row affected)
Successo!