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

क्या mysql टेबल एन्कोडिंग को बदलते समय कोई नकारात्मक प्रभाव पड़ता है?

खतरा मुझे लगता है कि वह ALTER मौजूदा टेक्स्ट को नष्ट कर देगा।

साथ ही, ... आपका 'नाम' चीनी दिखता है, तो मुझे लगता है कि आप चीनी अक्षरों को संग्रहित करना चाहते हैं? उस स्थिति में, आपको utf8mb4 . का उपयोग करना चाहिए , न केवल utf8 . ऐसा इसलिए है क्योंकि कुछ चीनी अक्षर 4 बाइट्स लेते हैं (और यूनिकोड बीएमपी में नहीं हैं)।

मेरा मानना ​​है कि आपको 2 चरणों की आवश्यकता है :

ALTER TABLE notebooks MODIFY comments BLOB;
ALTER TABLE notebooks MODIFY comments TEXT
          CHARACTER SET utf8mb4  COLLATE utf8mb4_general_520_ci;

अन्यथा latin1 अक्षर ut8 में "रूपांतरित" हो जाएगा। लेकिन अगर आपके कॉलम में वास्तव में चीनी है, तो आपके पास लैटिन 1 नहीं है। ऊपर दिया गया 2-चरण परिवर्तन, (1) वर्ण सेट के किसी भी ज्ञान को बंद कर देता है, और (2) यह स्थापित करता है कि बाइट वास्तव में utf8mb4-एन्कोडेड हैं।

सुरक्षित . होने के लिए , पहले करें

RENAME TABLE notebooks TO old;
CREATE TABLE notebooks LIKE old;
INSERT INTO notebooks SELECT * FROM old;

फिर दो ALTER करें और परिणाम का परीक्षण करें। यदि कोई समस्या है, तो आप RENAME . कर सकते हैं पुरानी प्रति वापस पाने के लिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle 11G . में LIMIT / OFFSET

  2. मैं अपने सर्वर पर MySQL धीमी क्वेरी लॉग को कैसे सक्षम कर सकता हूं?

  3. किसी फ़ील्ड से पहला शब्द निकालने के लिए MySQL क्वेरी

  4. * के बजाय Sequelize (NodeJS) के साथ विशिष्ट फ़ील्ड निर्दिष्ट करना

  5. कुछ शर्तों के तहत INSERT को रोकने के लिए MySQL ट्रिगर