अपडेट करें नीचे दिए गए उत्तर के लिए:
जिस समय सवाल पूछा गया था, MySQL में "UTF8" का मतलब utf8mb3
. था . इस बीच, utf8mb4
जोड़ा गया था, लेकिन मेरी जानकारी के लिए MySQLs "UTF8" को मतलब utf8mb4
पर स्विच नहीं किया गया था ।
इसका मतलब है कि, यदि आपका मतलब है तो आपको विशेष रूप से "utf8mb4" डालना होगा (और आपको utf8mb4
का उपयोग करना चाहिए )
मैं इसे केवल उत्तर संपादित करने के बजाय यहां रखूंगा, यह स्पष्ट करने के लिए कि "UTF8" कहने में अभी भी अंतर है
मूल
मैं रिचीज के जवाब का सुझाव नहीं दूंगा, क्योंकि आप डेटाबेस के अंदर डेटा खराब कर रहे हैं। आप अपनी समस्या को ठीक नहीं करेंगे, लेकिन इसे "छिपाने" की कोशिश करेंगे और खराब डेटा के साथ आवश्यक डेटाबेस संचालन करने में सक्षम नहीं होंगे।
यदि आप इस त्रुटि का सामना करते हैं तो या तो आपके द्वारा भेजा जा रहा डेटा UTF-8 एन्कोडेड नहीं है, या आपका कनेक्शन UTF-8 नहीं है। सबसे पहले, सत्यापित करें कि डेटा स्रोत (एक फ़ाइल, ...) वास्तव में UTF-8 है।
फिर, अपना डेटाबेस कनेक्शन जांचें, कनेक्ट करने के बाद आपको यह करना चाहिए:
SET NAMES 'utf8mb4';
SET CHARACTER SET utf8mb4;
इसके बाद, सत्यापित करें कि जिन तालिकाओं में डेटा संग्रहीत है, उनमें utf8mb4 वर्ण सेट है:
SELECT
`tables`.`TABLE_NAME`,
`collations`.`character_set_name`
FROM
`information_schema`.`TABLES` AS `tables`,
`information_schema`.`COLLATION_CHARACTER_SET_APPLICABILITY` AS `collations`
WHERE
`tables`.`table_schema` = DATABASE()
AND `collations`.`collation_name` = `tables`.`table_collation`
;
अंत में, अपनी डेटाबेस सेटिंग जांचें:
mysql> show variables like '%colla%';
mysql> show variables like '%charac%';
अगर स्रोत, परिवहन और गंतव्य utf8mb4 हैं, तो आपकी समस्या दूर हो गई है;)