SQL सर्वर त्रुटि संदेश 245, स्तर 16 हमें बताता है कि किसी मान को विशिष्ट डेटा प्रकार में बदलने का प्रयास करते समय एक समस्या थी।
यदि आप किसी कॉलम में गलत डेटा प्रकार डालने का प्रयास करते हैं तो आपको यह त्रुटि प्राप्त होगी।
इस समस्या को ठीक करने के लिए, सुनिश्चित करें कि आप जिस मान को सम्मिलित करने का प्रयास कर रहे हैं उसका डेटा प्रकार कॉलम के प्रकार से मेल खाता है।
समस्या कोड का उदाहरण
यहां कोड का एक उदाहरण दिया गया है जिसके परिणामस्वरूप यह त्रुटि हुई है।
INSERT INTO Orders(OrderId, OrderDate, OrderDesc)
VALUES ('2020-04-02', '2020-04-02', 'Dog food');
परिणाम:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value '2020-04-02' to data type int.
इस मामले में मैंने OrdersId
. में एक तारीख डालने की कोशिश की कॉलम। हम त्रुटि संदेश से यह मान सकते हैं कि यह कॉलम एक int . है कॉलम, लेकिन हमें इसकी पुष्टि करनी चाहिए।
यदि हम तालिका परिभाषा को देखते हैं, तो हम OrderId
. देख सकते हैं कॉलम का प्रकार:
CREATE TABLE Orders (
OrderId int NOT NULL,
OrderDate date NOT NULL,
OrderDesc varchar(255) NOT NULL,
CONSTRAINT PKOrders PRIMARY KEY CLUSTERED(OrderId, OrderDate)
);
जैसा अपेक्षित था, OrderId
कॉलम एक int . है स्तंभ।
समाधान
इस समस्या को हल करने के लिए, हमें यह सुनिश्चित करना होगा कि हम सही मान डाल रहे हैं। हमें यह भी सुनिश्चित करने की आवश्यकता है कि तालिका की परिभाषा उस डेटा के लिए उपयुक्त है जिसे इसे संग्रहीत करने की आवश्यकता है। यह हमारे डेटाबेस की डेटा अखंडता को लागू करने में मदद करेगा।
हमारे मामले में, कॉलम का डेटा प्रकार सही है। समस्या गलती से गलत डेटा डालने की कोशिश के कारण हुई थी।
इसलिए, समस्या को ठीक करने के लिए, हम अपना INSERT
. बदल सकते हैं सही डेटा डालने के लिए कथन।
INSERT INTO Orders(OrderId, OrderDate, OrderDesc)
VALUES (1, '2020-04-02', 'Dog food');
परिणाम:
(1 row affected)
सफलता!