2012-06-01 9 views
10

मेरे तालिका:एसक्यूएल सर्वर त्रुटि: स्ट्रिंग या बाइनरी डेटा होगा छोटा कर दिया

log_id     bigint 
old_value     xml 
new_value     xml 
module     varchar(50) 
reference_id   bigint 
[transaction]   varchar(100) 
transaction_status   varchar(10) 
stack_trace    ntext 
modified_on    datetime 
modified_by    bigint 

सम्मिलित क्वेरी:

INSERT INTO [dbo].[audit_log] 
      ([old_value],[new_value],[module],[reference_id],[transaction] 
      ,[transaction_status],[stack_trace],[modified_on],[modified_by]) 
    VALUES 
      ('asdf','asdf','Subscriber',4,'_transaction', 
      '_transaction_status','_stack_trace',getdate(),555) 

त्रुटि:

Msg 8152, Level 16, State 14, Line 1 
String or binary data would be truncated. 
The statement has been terminated. 

कि क्यों है ???

+2

+1 आपके प्रश्न को समझने के लिए पर्याप्त जानकारी प्रदान करने के लिए +1। मैंने इसे लगभग त्रुटि संदेश पढ़ने और अपने एसक्यूएल को खुद को पकड़ने के लिए देखकर वापस ले लिया। :-) –

+1

बस एक सुझाव: यदि आप Transaction_status में मानों की लंबाई के बारे में निश्चित नहीं हैं, तो इसे वर्चर (अधिकतम) – praveen

+1

@praveen वाह में बनाएं, यह बिल्कुल भी एक अच्छा सुझाव नहीं है। आप नहीं जानते कि वे नहीं जानते कि कॉलम कब तक होगा, और पहली प्रतिक्रिया पता लगाना है। अगर मेरे पास 30 बच्चे हैं तो क्या मुझे 30 बेडरूम का घर खरीदना चाहिए? बिलकूल नही। –

उत्तर

42

आप एक विशिष्ट कॉलम स्टोर से अधिक डेटा लिखने की कोशिश कर रहे हैं। प्रत्येक फ़ील्ड के आकार के खिलाफ डालने का प्रयास कर रहे डेटा के आकारों की जांच करें।

इस मामले में लेनदेन_स्टैटस एक वर्चर (10) है और आप इसे 19 वर्णों को स्टोर करने की कोशिश कर रहे हैं।

+5

+1। मुझे 8 सेकंड तक मारो। –

2

इस प्रकार की त्रुटि आम तौर पर होता है आप पात्रों डाल करने के लिए है या महत्व देता है कि आप इस मामले में की तरह डेटाबेस तालिका में निर्दिष्ट है की तुलना में अधिक होता है: आपके द्वारा निर्दिष्ट transaction_status varchar(10) लेकिन आप वास्तव में
_transaction_status जो शामिल संगृहीत करने का प्रयास 1 9 अक्षर यही कारण है कि आपको इस कोड में इस प्रकार की त्रुटि का सामना करना पड़ा ..

2

यह त्रुटि आम तौर पर एक तालिका में रिकॉर्ड डालने पर सामने आती है जहां कॉलम में से एक VARCHAR या CHAR डेटा प्रकार होता है और मान की लंबाई डाली जाती है कॉलम की लंबाई से अधिक लंबा है।

मैं संतुष्ट कैसे माइक्रोसॉफ्ट इस "सूखी" प्रतिक्रिया संदेश के साथ सूचित करने के लिए, इस सवाल का जवाब देखने के लिए जहां के किसी भी बिंदु के बिना तय नहीं कर रहा हूँ।

संबंधित मुद्दे

 संबंधित मुद्दे