L'erreur SQL Server Msg 245, niveau 16 nous indique qu'il y a eu un problème lors de la tentative de conversion d'une valeur en un type de données spécifique.
Vous obtiendrez cette erreur si vous essayez d'insérer le mauvais type de données dans une colonne.
Pour résoudre ce problème, assurez-vous que le type de données de la valeur que vous essayez d'insérer correspond au type de la colonne.
Exemple de code de problème
Voici un exemple de code qui génère cette erreur.
INSERT INTO Orders(OrderId, OrderDate, OrderDesc)
VALUES ('2020-04-02', '2020-04-02', 'Dog food');
Résultat :
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value '2020-04-02' to data type int.
Dans ce cas, j'ai essayé d'insérer une date dans le OrdersId
colonne. Nous pouvons supposer par le message d'erreur que cette colonne est un int colonne, mais nous devons vérifier cela.
Si nous regardons la définition de la table, nous pouvons voir le OrderId
type de colonne :
CREATE TABLE Orders (
OrderId int NOT NULL,
OrderDate date NOT NULL,
OrderDesc varchar(255) NOT NULL,
CONSTRAINT PKOrders PRIMARY KEY CLUSTERED(OrderId, OrderDate)
);
Comme prévu, le OrderId
la colonne est un int colonne.
Solution
Pour résoudre ce problème, nous devons nous assurer que nous insérons la valeur correcte. Nous devons également nous assurer que la définition de la table est appropriée pour les données qu'elle doit stocker. Cela aidera à renforcer l'intégrité des données de notre base de données.
Dans notre cas, le type de données de la colonne est correct. Le problème a été causé par une tentative accidentelle d'insertion de données erronées.
Par conséquent, pour résoudre le problème, nous pouvons modifier notre INSERT
déclaration pour insérer les données correctes.
INSERT INTO Orders(OrderId, OrderDate, OrderDesc)
VALUES (1, '2020-04-02', 'Dog food');
Résultat :
(1 row affected)
Succès !