2013-02-05 11 views
5

अक्षम करें यदि मैं केवल सफेद स्थान के साथ दो स्ट्रिंग्स दर्ज करता हूं। 'के लिए कुंजी' प्रविष्टि डुप्लिकेट 'प्राथमिक'MYSQL ऑटो-ट्रिम

मैं कैसे "ऑटो-ट्रिम" बंद करें कर सकते हैं:

त्रुटि 1062: मैं यह त्रुटि संदेश प्राप्त होगा?

मैं इस Charset: uft8-uft8_bin और यह डेटाटाइप का उपयोग कर रहा हूं: Varchar

+1

क्या आप सुनिश्चित हैं कि यह ऑटो ट्रिम की समस्या है? –

+0

हां इसकी प्राथमिक कुंजी है और मुझे यकीन नहीं है कि यह ऑटो ट्रिम की समस्या है .. लेकिन मैं अलग-अलग लेनगेट –

+0

के साथ दो खाली स्ट्रिंग कैसे जोड़ सकता हूं मेरा पहला सवाल कॉलम में रिक्त स्थान क्यों दर्ज कर रहा है? क्या यह आवश्यक है? इसके अलावा यदि आवश्यक हो तो आप सुनिश्चित हैं कि कॉलम प्राथमिक कुंजी होनी चाहिए? – Vijay

उत्तर

6

SQL 92 दस्तावेज़ीकरण के अनुसार, जब दो तारों की तुलना की जाती है तो उन्हें पहले रिक्त स्थान के साथ सबसे छोटी स्ट्रिंग पैडिंग करके लंबाई में बराबर बना दिया जाता है।

दस्तावेज़ में 8.2 <comparison predicate> के लिए खोजें।

If the length in characters of X is not equal to the length 
in characters of Y, then the shorter string is effectively 
replaced, for the purposes of comparison, with a copy of 
itself that has been extended to the length of the longer 
string by concatenation on the right of one or more pad char- 
acters, where the pad character is chosen based on CS. If 
CS has the NO PAD attribute, then the pad character is an 
implementation-dependent character different from any char- 
acter in the character set of X and Y that collates less 
than any string under CS. Otherwise, the pad character is a 
<space>. 

तो दूसरे शब्दों में। यह आपके द्वारा दर्ज की गई रिक्त स्थान की मात्रा के साथ मूल्य को संग्रहीत करने के बारे में नहीं है, लेकिन इसकी तुलना डुप्लिकेट प्राथमिक कुंजी की जांच करने के लिए करती है। तो आपके पास एक अलग कुंजी के साथ दो तार नहीं हो सकते हैं प्राथमिक कुंजी

+0

उत्तर देने के लिए धन्यवाद। क्या आप मुझे बता सकते हैं कि मैं कोई पैड कैसे सेट कर सकता हूं? –

+0

दुर्भाग्यवश MYSQL आपको इसे बदलने की अनुमति नहीं देता है। मैनुअल में http://dev.mysql.com/doc/refman/5.5/en/char.html यह कहता है कि 'सभी MySQL collations प्रकार PADSPACE हैं। इसका मतलब है कि MySQL में सभी CHAR और VARCHAR मानों की तुलना किसी भी पीछे की जगहों के बिना की जाती है –