MySQL අක්ෂර කේතන ගැටළු (Moji-bake) සවිස්තරාත්මක විසඳුම්: හේතු, විසඳුම්, සහ පරීක්ෂණ මාර්ගෝපදේශය

目次

1. හැඳින්වීම

MySQL භාවිතා කරමින් දත්ත ගබඩාවක් ගොඩනැගීමේදී, අක්ෂර කේතනයේ ගැටලු (moji-bake) යනු පරිශීලකයන් මුහුණ දෙන සාමාන්‍යම ගැටලු අතරින් එකකි. අක්ෂර විකෘතියක් සිදුවූ විට, දත්ත නිවැරදිව පෙන්වීමට හෝ ඇතුළත් කිරීමට නොහැකි වන අතර, එය ව්‍යාපාරික මෙහෙයුම් සහ පද්ධති කළමනාකරණයට වැදගත් අඩුපාඩු ඇති කරයි. මෙම ලිපිය MySQL හි අක්ෂර කේතනයේ ගැටලු ඇති වීමට ඇති ප්‍රධාන හේතු විස්තර කරයි, ප්‍රභාවී විසඳුම් සළස්වයි, සහ ප්‍රායෝගික ගැටලු විසඳුම් පියවර සපයයි.

2. අක්ෂර කේතනයේ ගැටලු ඇති වීමට ඇති ප්‍රධාන හේතු

MySQL හි අක්ෂර කේතනයේ ගැටලු සාමාන්‍යයෙන් පහත සඳහන් තුන් වර්ග වලට වර්ගීකරණය කළ හැකිය:

අක්ෂර කේතනය සැකසුම් අතර නොගැලපීම

  • MySQL බහු අක්ෂර සමුදා (character sets) සහාය දක්වයි. ගනුදෙනුකරු (client) සහ සේවාදායකය (server) අතර අක්ෂර කේතනය නොගැලපේ නම්, අක්ෂර විකෘතිය සිදුවේ.

ගනුදෙනුකරු සහ සේවාදායකය අතර සැකසුම් වෙනස් වීම

  • ගනුදෙනුකරු (උදාහරණයක් ලෙස phpMyAdmin හෝ command-line tool) වෙතින් යවන ලද පදය සේවාදායකයේ අක්ෂර සමුදා සැකසුමට නොගැලපේ නම්, ගැටලු ඇති විය හැකිය.

දත්ත ගබඩා හෝ වගුව සඳහා අසත්‍ය අක්ෂර සමුදා සැකසුම්

  • දත්ත ගබඩාවක් හෝ වගුවක් සාදන විට CHARACTER SET නිසි ලෙස නියම නොකරන්නේ නම්, පසුකාලීනව දත්ත සැකසීමේදී අසමතුලිතතා පැන නැගේ.

3. MySQL අක්ෂර සමුදා සැකසුම් අවබෝධ කර ගැනීම

MySQL අක්ෂර සමුදා සැකසුම් නිවැරදිව අවබෝධ කර ගැනීම අක්ෂර විකෘතිය වැළැක්වීමට පළමු පියවරයි. පහත අයිතම පරීක්ෂා කරමු.

ප්‍රධාන අක්ෂර සමුදා සැකසුම් විචල්‍යයන්

  • character_set_server : සම්පූර්ණ සේවාදායකය සඳහා පෙරනිමි අක්ෂර සමුදාය
  • character_set_client : ගනුදෙනුකරු වෙතින් යවන පදයන්ගේ අක්ෂර සමුදාය
  • character_set_database : දත්ත ගබඩාව සඳහා පෙරනිමි අක්ෂර සමුදාය

වත්මන් සැකසුම් පරීක්ෂා කිරීමේ ක්‍රමය

  • වත්මන් අක්ෂර සමුදා සැකසුම් පරීක්ෂා කිරීම සඳහා පහත කමාන්ඩ් ක්‍රියාත්මක කරන්න.
    SHOW VARIABLES LIKE 'character_set%';
    
  • ප්‍රතිඵල අනුව, සැකසුම් අතර ඇති නොගැලපීම් හඳුනා ගන්න.

4. අක්ෂර කේතනයේ ගැටලු වැළැක්වීම

අක්ෂර විකෘතිය පෙරදැරිව වැළැක්වීමට, නිවැරදි සැකසුම් සහ පරිසර සැකසීම අත්‍යවශ්‍ය වේ.

MySQL සැකසුම් ගොනුව (my.cnf/my.ini) සකස් කිරීම

  • සේවාදායක-පාර්ශ්ව සැකසුම් වෙනස් කිරීමට, පහත පරිදි my.cnf හෝ my.ini සංස්කරණය කරන්න.
    [mysqld]
    character-set-server = utf8mb4
    collation-server = utf8mb4_general_ci
    

දත්ත ගබඩා සහ වගු සඳහා අක්ෂර කේතනය සකස් කිරීම

  • දත්ත ගබඩාවක් සාදන විට, පහත කමාන්ඩ් භාවිතයෙන් අක්ෂර සමුදාය නිශ්චිතව නියම කරන්න.
    CREATE DATABASE sample_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    
  • පවතින වගුවක් වෙනස් කිරීමට:
    ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4;
    

ගනුදෙනුකරු පරිසරය සකස් කිරීම

  • command-line tool භාවිතා කරන විට, සම්බන්ධතාවය ස්ථාපනය කරන වේලාවේ අක්ෂර සමුදාය නියම කරන්න.
    mysql --default-character-set=utf8mb4 -u root -p
    

5. අක්ෂර විකෘතිය සිදුවූ විට කළ යුතු දේ

අක්ෂර කේතනයේ ගැටලු ඇති වූ විට, පහත පියවර අනුගමනය කර ගැටලුව විසඳන්න.

සැකසුම් පරීක්ෂා කිරීම

  • පෙර සඳහන් SHOW VARIABLES කමාන්ඩ් භාවිතා කර වත්මන් සැකසුම් අගයන් තහවුරු කරන්න.

දත්ත උපස්ථාපනය සහ ප්‍රතිස්ථාපනය

  • දත්ත උපස්ථාපනය කරන විට, අක්ෂර සමුදාය නිශ්චිතව නියම කිරීම අත්‍යවශ්‍ය වේ.
    mysqldump --default-character-set=utf8mb4 -u root -p database_name > backup.sql
    
  • ප්‍රතිස්ථාපනය කරන විට ඒම අක්ෂර සමුදාය නියම කරන්න.
    mysql --default-character-set=utf8mb4 -u root -p database_name < backup.sql
    

ගැටලු විසඳුම් පියවර

  • SHOW VARIABLES කමාන්ඩ් භාවිතා කර සැකසුම් පරීක්ෂා කර, අවශ්‍ය නම් නිවැරදි සැකසුම් වලට යාවත්කාලීන කර, නැවත පරීක්ෂා කරන්න. ලොග් ගොනු සහ දෝෂ පණිවුඩ පරීක්ෂා කර මූලික හේතුව හඳුනා ගන්න.

6. FAQ (නිතර අසන ප්‍රශ්න)

Q1: MySQL හි ජපන් පාඨය “???” ලෙස පෙන්වෙන්නේ ඇයි?

  • ගනුදෙනුකරු හෝ සේවාදායකයේ අක්ෂර සමුදා සැකසුම latin1 හෝ අනෙකුත් අනුකූල නොවන කේතනයකට සකසා තිබිය හැකිය. එය utf8mb4 ලෙස වෙනස් කරන්න.

Q2: පවත්නා වගුවක අක්ෂර සමුහය කෙසේ වෙනස් කළ හැකිද?

  • ඔබට පහත කමාන්ඩ් භාවිතා කර එය වෙනස් කළ හැක.
    ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4;
    

Q3: Windows විධාන ප්‍රොම්ප්ට් එකේ අක්ෂර විකෘතිය වැළැක්වීමට කෙසේද?

  • chcp 65001 කමාන්ඩ් භාවිතා කර කේත පිටුව UTF-8 වෙත වෙනස් කරන්න.

Q4: Docker පරිසරයේ අක්ෂර විකෘතිය වැළැක්වීමට කෙසේද?

  • හෝස් පාර්ශවයේ my.cnf ගොනුවක් සාදලා, එය කන්ටේනරය තුළ සුදුසු ස්ථානයට මවුන්ට් කර වින්‍යාසය යෙදිය හැක.

Q5: MySQL වින්‍යාස ගොනුව කොහේද පිහිටා තිබේ?

  • Linux හි, එය සාමාන්‍යයෙන් /etc/my.cnf හෝ /etc/mysql/my.cnf හි පිහිටා ඇත. Windows හි, එය MySQL ස්ථාපන නාමාවලියේ ඇතුළත පිහිටා ඇත.

7. Summary

MySQL හි අක්ෂර කේතන ගැටළු නිසි වින්‍යාසය සහ පද්ධතිමය ගැටුම් විසඳුම් මගින් විසඳිය හැක. මෙම ලිපියේ සඳහන් පියවර භාවිතා කර ඔබේ සැකසුම් අවශ්‍ය පරිදි පරීක්ෂා කර සකස් කරන්න. ඔබේ වින්‍යාසය නිතර සමාලෝචනය කිරීමෙන්, අක්ෂර විකෘතියේ අවදානම අඩු කර ස්ථාවර දත්ත ගබඩා පරිසරයක් පවත්වා ගත හැක.