Lỗi SQL Server Msg 245, Mức 16 cho chúng tôi biết rằng đã xảy ra sự cố khi cố gắng chuyển đổi một giá trị thành một kiểu dữ liệu cụ thể.
Bạn sẽ gặp lỗi này nếu cố gắng chèn không đúng loại dữ liệu vào một cột.
Để khắc phục sự cố này, hãy đảm bảo rằng loại dữ liệu của giá trị bạn đang cố chèn, khớp với loại của cột.
Ví dụ về Mã sự cố
Dưới đây là một ví dụ về mã dẫn đến lỗi này.
INSERT INTO Orders(OrderId, OrderDate, OrderDesc)
VALUES ('2020-04-02', '2020-04-02', 'Dog food');
Kết quả:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value '2020-04-02' to data type int.
Trong trường hợp này, tôi đã cố gắng chèn một ngày vào OrdersId
cột. Chúng tôi có thể giả định bằng thông báo lỗi rằng cột này là int nhưng chúng ta nên xác minh điều đó.
Nếu chúng ta nhìn vào định nghĩa bảng, chúng ta có thể thấy OrderId
loại của cột:
CREATE TABLE Orders (
OrderId int NOT NULL,
OrderDate date NOT NULL,
OrderDesc varchar(255) NOT NULL,
CONSTRAINT PKOrders PRIMARY KEY CLUSTERED(OrderId, OrderDate)
);
Như mong đợi, OrderId
cột là một int cột.
Giải pháp
Để giải quyết vấn đề này, chúng tôi cần đảm bảo rằng chúng tôi đang chèn giá trị chính xác. Chúng ta cũng cần đảm bảo rằng định nghĩa bảng phù hợp với dữ liệu mà nó cần lưu trữ. Điều này sẽ giúp thực thi tính toàn vẹn dữ liệu của cơ sở dữ liệu của chúng tôi.
Trong trường hợp của chúng tôi, loại dữ liệu của cột là chính xác. Sự cố do cố tình chèn sai dữ liệu.
Do đó, để khắc phục sự cố, chúng tôi có thể thay đổi INSERT
của chúng tôi câu lệnh để chèn dữ liệu chính xác.
INSERT INTO Orders(OrderId, OrderDate, OrderDesc)
VALUES (1, '2020-04-02', 'Dog food');
Kết quả:
(1 row affected)
Thành công!