दिलचस्प पोस्ट
ऐप पूर्वावलोकन के लिए आईओएस सिम्युलेटर वीडियो कैप्चर करें मैं "नेटवर्क" समय कैसे प्राप्त कर सकता हूं, ("स्वचालित" सेटिंग से "नेटवर्क-प्रदान किए गए मानों का उपयोग करें" कहलाता है), फोन पर समय नहीं है? पैरामीटर के रूप में एक चर के प्रकार का उपयोग करके सी # में जेनरिक पहले से ही सबवर्सन में लॉग किए गए लॉग संदेश को कैसे संपादित करें? धुंधला ट्रे आइकन GMail और phpMailer के साथ भेजते समय "पासवर्ड सर्वर से स्वीकार नहीं किया गया: 535 गलत प्रमाणीकरण डेटा" पीडीएफ ब्लॉब सामग्री प्रदर्शित नहीं कर रहा है, कोनालर 2 एकल पुनर्लेखन के लिए कई पुनर्लेखन नियम .htaccess में एक रिपॉजिटरी से दूसरे में एक git पैच को कैसे लागू किया जाए? GetElementsByClassName से एक सरणी के लिए प्रत्येक का उपयोग "प्रकार त्रुटि: अपरिभाषित कोई फ़ंक्शन नहीं है" C, C ++, और C # में शून्य का क्या अर्थ है? ईवेंट को खारिज करने के लिए स्वाइप करें आंतरिक या बाहरी कमांड, ऑपरेटिव प्रोग्राम या बैच फ़ाइल के रूप में मान्यता प्राप्त नहीं है UIButton का टेक्स्ट बदलना प्रोग्रामेटिक रूप से तेज है क्या हम "नया" ऑपरेटर का प्रयोग करते हुए वस्तु बनाते समय कोष्ठकों को छोड़ सकते हैं?

Collations MySQL त्रुटि का अवैध मिश्रण

बड़ी संख्या में डेटा प्रसंस्करण करते समय मुझे यह अजीब त्रुटि मिल रही है …

Error Number: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' SELECT COUNT(*) as num from keywords WHERE campaignId='12' AND LCASE(keyword)='hello again 昔 ã‹ã‚‰ ã‚ã‚‹ å ´æ‰€' 

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

Solutions Collecting From Web of "Collations MySQL त्रुटि का अवैध मिश्रण"

 SET collation_connection = 'utf8_general_ci'; 

तो आपके डेटाबेस के लिए

 ALTER DATABASE your_database_name CHARACTER SET utf8 COLLATE utf8_general_ci; ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; 

MySQL कभी कभी कोई समझदार कारण के लिए स्वीडिश sneaks।

आपको अपनी तालिका एन्कोडिंग और कनेक्शन एन्कोडिंग दोनों को UTF-8 सेट करना चाहिए:

 ALTER TABLE keywords CHARACTER SET UTF8; -- run once 

तथा

 SET NAMES 'UTF8'; SET CHARACTER SET 'UTF8'; 

मेरी मेज मूलतः CHARSET = latin1 के साथ बनाई गई थी यूफ़टी 8 में तालिका रूपांतरण के बाद कुछ कॉलम परिवर्तित नहीं हुए थे, हालांकि यह वास्तव में स्पष्ट नहीं था। आप अपने SHOW CREATE TABLE my_table; लिए चला सकते हैं SHOW CREATE TABLE my_table; और देखें कि कौन सा स्तंभ परिवर्तित नहीं किया गया था या नीचे दिए गए प्रश्न के साथ समस्याग्रस्त कॉलम पर गलत वर्ण सेट को ठीक नहीं किया गया है (अपनी आवश्यकताओं के अनुसार वक्रार लंबाई और चार्सेट और कोलेटल बदलें):

  ALTER TABLE `my_table` CHANGE `my_column` `my_column` VARCHAR(10) CHARSET utf8 COLLATE utf8_general_ci NULL; 

सामान्य रूप से तालिका मिलान को बदलने का सबसे अच्छा तरीका है। हालांकि मेरे पास एक पुराना आवेदन है और परिणाम का अनुमान लगाने में वास्तव में सक्षम नहीं हैं कि क्या इसके दुष्प्रभाव हैं इसलिए मैंने किसी स्ट्रिंग को किसी अन्य प्रारूप में कनवर्ट करने की कोशिश की जो कि collation समस्या का समाधान करती है। मुझे क्या काम मिल रहा है स्ट्रिंग को उसके अक्षर के हेक्साडेसिमल प्रस्तुति में स्ट्रिंग में परिवर्तित करके करना है। डेटाबेस पर HEX(column). साथ किया जाता है PHP के लिए आप इस फ़ंक्शन का उपयोग कर सकते हैं:

 public static function strToHex($string) { $hex = ''; for ($i=0; $i<strlen($string); $i++){ $ord = ord($string[$i]); $hexCode = dechex($ord); $hex .= substr('0'.$hexCode, -2); } return strToUpper($hex); } 

डेटाबेस क्वेरी करते समय, आपकी मूल यूटीएफ 8 स्ट्रिंग को पहले आईएसओ स्ट्रिंग में परिवर्तित किया जाना चाहिए (जैसे PHP में utf8_decode() में) डीबी में उपयोग करने से पहले। कॉलेशन प्रकार के कारण डेटाबेस में यूटीएफ 8 अक्षर नहीं हो सकते हैं, इसलिए तुलनात्मक घटना को काम करना चाहिए, हालांकि यह मूल स्ट्रिंग बदलता है (जो कि यूटीएफ 8 वर्णों को परिवर्तित करने के लिए आईएसओ वर्णसेट परिणाम में मौजूद नहीं है? या इन्हें पूरी तरह से हटा दिया गया है)। बस यह सुनिश्चित करें कि जब आप डेटाबेस में डेटा लिखते हैं, तो आप उसी यूटीएफ 8 को आईएसओ रूपांतरण के लिए उपयोग करते हैं।