Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

क्या यह MySQL तालिकाओं को latin1 से utf-8 में बदलने का एक सुरक्षित तरीका है?

विचार करने के लिए 3 अलग-अलग मामले हैं:

मान वास्तव में लैटिन1 का उपयोग करके एन्कोड किए गए हैं

यह सुसंगत मामला है:घोषित वर्णसेट और सामग्री एन्कोडिंग मिलान। यह एकमात्र मामला था जिसे मैंने अपने प्रारंभिक उत्तर में शामिल किया था।

आपके द्वारा सुझाए गए आदेश का प्रयोग करें:

ALTER TABLE tablename CONVERT TO CHARSET utf8 COLLATE utf8_bin

ध्यान दें कि CONVERT TO CHARACTER SET आदेश केवल MySQL 4.1.2 में दिखाई दिया, इसलिए 2005 से पहले स्थापित डेटाबेस का उपयोग करने वाले किसी भी व्यक्ति को निर्यात/आयात चाल का उपयोग करना पड़ा। यही कारण है कि इंटरनेट पर इतनी पुरानी स्क्रिप्ट और दस्तावेज़ हैं जो इसे पुराने तरीके से कर रहे हैं।

मान पहले से ही utf8 का उपयोग करके एन्कोड किए गए हैं

इस मामले में, आप नहीं चाहते कि mysql किसी भी डेटा को रूपांतरित करे, आपको केवल कॉलम के मेटाडेटा को बदलने की आवश्यकता है।

इसके लिए, आपको पहले प्रकार को BLOB में बदलना होगा, फिर प्रत्येक कॉलम के लिए TEXT utf8 में बदलना होगा, ताकि कोई मूल्य रूपांतरण न हो:

ALTER TABLE t1 CHANGE c1 c1 BLOB;
ALTER TABLE t1 CHANGE c1 c1 TEXT CHARACTER SET utf8

यह अनुशंसित तरीका है, और यह स्पष्ट रूप से Alter में प्रलेखित है। टेबल सिंटैक्स दस्तावेज़ीकरण

मान भिन्न एन्कोडिंग में उपयोग किए जाते हैं

कुछ लिनक्स वितरणों पर कई वर्षों तक डिफ़ॉल्ट एन्कोडिंग लैटिन 1 थी। इस मामले में, आपको दो तकनीकों के संयोजन का उपयोग करना होगा:

  • BLOB टाइप ट्रिक का उपयोग करके टेबल मेटा-डेटा को ठीक करें
  • CONVERT TO . का उपयोग करके मानों को रूपांतरित करें ।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सूत्र के आधार पर mysql कॉलम मान को कैसे पॉप्युलेट करें?

  2. ऑटो वेतन वृद्धि आरंभिक संख्या बदलें?

  3. चर से mysql फ़ील्ड नाम

  4. MySQL में RLIKE ऑपरेटर कैसे काम करता है

  5. यूटीएफ समकक्षों के साथ MySQL स्थानापन्न html विशेष वर्ण