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

MySQL वर्ण एन्कोडिंग परिवर्तन। क्या डेटा अखंडता संरक्षित है?

प्रत्येक (वर्ण स्ट्रिंग-प्रकार) स्तंभ इसका अपना स्वयं है कैरेक्टर सेट और कोलेशन मेटाडेटा।

अगर, जब कॉलम का डेटा प्रकार निर्दिष्ट किया गया था (अर्थात जब इसे अंतिम बार बनाया या बदला गया था), कोई वर्ण सेट/संयोजन स्पष्ट रूप से नहीं दिया गया था, तो तालिका के डिफ़ॉल्ट वर्ण सेट और संयोजन का उपयोग कॉलम के लिए किया जाएगा।

यदि, जब तालिका निर्दिष्ट किया गया था, कोई डिफ़ॉल्ट वर्ण सेट/संयोजन स्पष्ट रूप से नहीं दिया गया था, तो डेटाबेस का डिफ़ॉल्ट वर्ण सेट और संयोजन तालिका के डिफ़ॉल्ट के लिए उपयोग किया जाएगा।

आपके द्वारा अपने प्रश्न में उद्धृत किए गए आदेश क्रमशः डेटाबेस और तालिका के लिए ऐसे डिफ़ॉल्ट वर्ण सेट/कोलेशन को बदलते हैं। दूसरे शब्दों में, वे केवल उन तालिकाओं और स्तंभों को प्रभावित करेंगे जो उसके बाद बनाई गई हैं—वे नहीं मौजूदा कॉलम (या डेटा) को प्रभावित करते हैं।

मौजूदा डेटा को अपडेट करने के लिए, आपको सबसे पहले चरित्र सेट बदलना ALTER TABLE . पर मैनुअल पेज का सेक्शन :

केवल डिफ़ॉल्ट को बदलने के लिए तालिका के लिए वर्ण सेट, इस कथन का उपयोग करें:

ALTER TABLE tbl_name DEFAULT CHARACTER SET charset_name;

शब्द DEFAULT वैकल्पिक है। डिफ़ॉल्ट वर्ण सेट वह वर्ण सेट होता है जिसका उपयोग तब किया जाता है जब आप उन स्तंभों के लिए वर्ण सेट निर्दिष्ट नहीं करते हैं जिन्हें आप बाद में किसी तालिका में जोड़ते हैं (उदाहरण के लिए, ALTER TABLE... कॉलम जोड़ें के साथ) )।

जब सिस्टम चर सक्षम है, जो कि डिफ़ॉल्ट सेटिंग है, उन तालिकाओं पर वर्ण सेट रूपांतरण की अनुमति नहीं है जिनमें एक विदेशी कुंजी बाधा में उपयोग किया जाने वाला वर्ण स्ट्रिंग कॉलम शामिल है। समाधान foreign_key_checks को अक्षम करना है चरित्र सेट रूपांतरण करने से पहले। विदेशी_की_चेक . अगर आप foreign_key_checks को फिर से सक्षम करते हैं केवल एक टेबल को बदलने के बाद, एक ON DELETE CASCADE या अपडेट कैस्केड पर ऑपरेशन इन ऑपरेशनों के दौरान होने वाले अंतर्निहित रूपांतरण के कारण संदर्भ तालिका में डेटा दूषित कर सकता है (बग #45290, बग #74816)।




  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 LIMIT

  2. मेरा एसक्यूएल चयन कथन तीन टेबल पर शामिल हों

  3. MySQL त्रुटि #1071 - निर्दिष्ट कुंजी बहुत लंबी थी; अधिकतम कुंजी लंबाई 767 बाइट्स है

  4. बहुत धीमी (1 सेकंड) कनेक्शन

  5. MySQL में GROUP BY को ठीक से कैसे करें?