ป้ายกำกับ: Wintergatan

MariaDB: เช็ค Character Set และ CollationMariaDB: เช็ค Character Set และ Collation

ในโลกของการพัฒนาฐานข้อมูล การกำหนดค่า Character Set และ Collation ที่ถูกต้องถือเป็นรากฐานสำคัญที่กำหนดความสมบูรณ์ของข้อมูล หาก Character Set ไม่ตรงกัน หรือ Collation มีความขัดแย้ง อาจส่งผลให้เกิดปัญหาข้อมูลเพี้ยน (Data Corruption) โดยเฉพาะเมื่อต้องจัดการกับอักขระพิเศษ ภาษาต่างประเทศ หรือ Emoji

บทความนี้ในฐานะ System Specialist จะพาคุณไปดูวิธีการใช้ SQL Query ตรวจสอบอย่างละเอียดว่า Table และ Column ต่างๆ ใน MariaDB ของคุณยังคงใช้ค่าเริ่มต้นที่ไม่เหมาะสมหรือไม่ โดยเราจะใช้ตารางพิเศษที่ชื่อว่า information_schema ซึ่งเปรียบเสมือนสารบัญรวมข้อมูลของระบบฐานข้อมูลทั้งหมด

🔍 1. การตรวจสอบระดับ Table (Table Level Check)

ก่อนอื่น เราควรตรวจสอบภาพรวมระดับตารางก่อนว่าตารางใดบ้างที่ยังไม่ได้ถูกตั้งค่า Character Set และ Collation ให้เป็นมาตรฐานที่แนะนำ เช่น utf8mb4 ซึ่งรองรับ Unicode ได้อย่างสมบูรณ์

คุณสามารถใช้ Query นี้เพื่อดึงรายชื่อตารางทั้งหมดใน Database ที่คุณระบุ ซึ่งยังไม่ได้ตั้งค่าเป็น utf8mb4_unicode_ci:

SQL

SELECT 
 TABLE_SCHEMA AS 'Database', 
 TABLE_NAME AS 'Table', 
 TABLE_COLLATION AS 'Current_Collation'
FROM 
 information_schema.TABLES 
WHERE 
 TABLE_SCHEMA = 'ชื่อ_database_ของคุณ' -- *** เปลี่ยนตรงนี้เป็นชื่อ DB ของคุณ ***
AND TABLE_COLLATION != 'utf8mb4_unicode_ci';

💡 คำอธิบาย: Query นี้จะกรองเฉพาะตารางที่มี Collation ไม่ตรงกับค่ามาตรฐานที่กำหนด ทำให้คุณเห็นรายการที่ต้องแก้ไขเป็นอันดับแรก

📝 2. การตรวจสอบระดับ Column (Column Level Check)

แม้ว่า Table จะถูกตั้งค่าเป็น utf8mb4 แล้ว แต่บางครั้ง Column ย่อยๆ อาจยังหลงเหลือการตั้งค่าเก่า เช่น latin1 หรือ tis620 ซึ่งเป็นสาเหตุหลักของปัญหาข้อมูลเพี้ยน การตรวจสอบระดับ Column จึงมีความสำคัญอย่างยิ่ง

ใช้ Script นี้เพื่อตรวจสอบรายละเอียดของ Column ทั้งหมดใน Database:

SQL

SELECT 
 TABLE_NAME AS 'Table', 
 COLUMN_NAME AS 'Column', 
 CHARACTER_SET_NAME AS 'Char_Set', 
 COLLATION_NAME AS 'Collation', 
 DATA_TYPE AS 'Data_Type'
FROM 
 information_schema.COLUMNS 
WHERE 
 TABLE_SCHEMA = 'ชื่อ_database_ของคุณ' -- *** เปลี่ยนตรงนี้เป็นชื่อ DB ของคุณ ***
AND (CHARACTER_SET_NAME != 'utf8mb4' OR COLLATION_NAME != 'utf8mb4_unicode_ci');

💡 คำแนะนำ: หากผลลัพธ์แสดงค่าที่ไม่ใช่ utf8mb4 หรือ utf8mb4_unicode_ci ให้ถือว่าเป็นจุดที่ต้องดำเนินการแก้ไขค่า Character Set และ Collation ของ Column นั้นๆ ทันที

✅ บทสรุปและขั้นตอนถัดไป

การตรวจสอบ Character Set และ Collation เป็นขั้นตอนเชิงป้องกันที่ขาดไม่ได้ในการดูแลระบบฐานข้อมูล หากคุณพบว่ามี Column หรือ Table ใดๆ ที่ยังใช้ค่าเก่าอยู่ สิ่งที่คุณควรทำคือการใช้คำสั่ง ALTER TABLE และ ALTER COLUMN เพื่อเปลี่ยนค่าให้เป็น CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ให้ครบทุกจุด

การรักษาความสม่ำเสมอของ Character Set และ Collation ทั่วทั้งระบบ จะช่วยให้มั่นใจได้ว่าข้อมูลภาษาไทย ข้อมูลสากล และอักขระพิเศษต่างๆ จะถูกจัดเก็บและเรียกใช้งานได้อย่างถูกต้อง 100% ลดความเสี่ยงของปัญหาข้อมูลเพี้ยนที่ยากต่อการแก้ไขในภายหลัง