Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีแปลง Character Set และ Collation ของฐานข้อมูล MySQL เป็น UTF-8


ตรวจสอบเวอร์ชันและ Character set ปัจจุบัน:

mysql> SELECT VERSION();  -- 8.0.12
mysql> SELECT CCSA.character_set_name
FROM information_schema.TABLES T,
     information_schema.COLLATION_CHARACTER_SET_APPLICABILITY CCSA
WHERE CCSA.collation_name = T.table_collation
  AND T.table_schema = 'sample' AND T.table_name = 'mytable';
+--------------------+
| CHARACTER_SET_NAME |
+--------------------+
| utf8mb4            |
+--------------------+

เปลี่ยน Database default charset/collation:

mysql> ALTER DATABASE sample CHARACTER SET utf8 COLLATE utf8_general_ci; Query OK, 1 row affected, 1 warning (0.27 sec)

หมายเหตุสำคัญ:

  • ALTER DATABASE เปลี่ยนแค่ Default สำหรับตารางใหม่ ไม่เปลี่ยนตารางที่มีอยู่แล้ว
  • ต้อง ALTER TABLE ... CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci สำหรับแต่ละตาราง
  • MySQL 8.0 ใช้ utf8mb4 เป็นค่าเริ่มต้น (รองรับ Emoji, 4-byte UTF-8) ควรใช้ utf8mb4 แทน utf8 (ซึ่งเป็น alias ของ utf8mb3)
  • Collation แนะนำ: utf8mb4_unicode_ci (มาตรฐาน Unicode) หรือ utf8mb4_0900_ai_ci (MySQL 8.0+)