Site icon PlusMagi's Blog By Pitt Phunsanit

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

คุณสามารถใช้ SQL Query ตรวจสอบผ่านตาราง information_schema ซึ่งเป็นสารบัญรวมข้อมูลทั้งหมดของ Database ในเครื่อง เพื่อหาว่ามี Table หรือ Column ไหนบ้างที่ยังไม่ได้ใช้ utf8mb4 ครับ


ตรวจสอบระดับ Table

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

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';

ตรวจสอบระดับ Column

บางครั้งตัว Table เป็น utf8mb4 แล้ว แต่บาง Column อาจจะยังหลงเหลือเป็น latin1 หรือ tis620 อยู่ ใช้ Script นี้เช็คครับ

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 IS NOT NULL -- กรองเฉพาะพวก Text/Varchar
 AND (CHARACTER_SET_NAME != 'utf8mb4' OR COLLATION_NAME != 'utf8mb4_unicode_ci') ;

Script ช่วยสร้างคำสั่ง ALTER

ถ้าคุณมีหลายตารางที่ต้องแก้ Script นี้จะช่วย Generate คำสั่ง SQL ออกมาให้คุณก๊อปปี้ไปรันได้เลยครับ

SELECT 
 CONCAT ('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, 
 ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;') AS Execute_This_SQL
FROM 
 information_schema.TABLES 
WHERE 
 TABLE_SCHEMA = 'ชื่อ_database_ของคุณ' 
 AND TABLE_COLLATION != 'utf8mb4_unicode_ci';

ข้อควรระวังก่อนรันคำสั่งที่ได้จาก Script


อ่านเพิ่มเติม

Exit mobile version