मैंने आधा दिन भयानक "संयोजनों के अवैध मिश्रण" त्रुटि के उत्तर खोजने में बिताया है। मैंने पाया कि मेरे डेटाबेस में कुछ कॉलम विशेष रूप से संकलित नहीं थे utf8_unicode_ci . ऐसा लगता है कि mysql ने इन कॉलमों को परोक्ष रूप से संकलित किया है utf8_general_ci ।
विशेष रूप से, 'तालिका तालिका 1 बनाएं' क्वेरी चलाने से निम्न की तरह कुछ आउटपुट होता है:
| तालिका 1 | टेबल बनाएं table1
(id
int(11) न्यूल नहीं,col1
वर्कर(4) कैरेक्टर सेट utf8 नॉट न्यूल,col2
int(11) न्यूल नहीं, प्राथमिक कुंजी (photo_id
,tag
)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |
लाइन नोट करें 'col1' varchar(4) CHARACTER SET utf8 NOT NULL निर्दिष्ट एक संयोजन नहीं है। फिर मैंने निम्नलिखित क्वेरी चलाई:
ALTER TABLE table1 col1 col1 VARCHAR(4) CHARACTER SET utf8COLLATE utf8_unicode_ci NOT NULL;
बदलेंइसने मेरी "कोलेशन के अवैध मिश्रण" त्रुटि को हल किया। उम्मीद है कि यह किसी और की मदद कर सकता है।