Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách chuyển character set và collation MySQL sang UTF-8

MySQL 8.0 mặc định dùng utf8mb4 (hỗ trợ đầy đủ Unicode bao gồm emoji). utf8 cũ chỉ hỗ trợ 3 byte (BMP).

Kiểm tra charset hiện tại của bảng

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            |
+--------------------+

Chuyển database sang utf8 (alias utf8mb3) - KHÔNG KHUYẾN NGHỊ

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

Cảnh báo: utf8 là alias của utf8mb3 (chỉ 3 byte).

Khuyến nghị: Dùng utf8mb4

ALTER DATABASE sample CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Chuyển đổi bảng và cột hiện có

-- Chuyển bảng (mặc định cho cột mới)
ALTER TABLE ten_bang CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Hoặc chỉ đổi default cho bảng (cột cũ giữ nguyên)
ALTER TABLE ten_bang CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Lưu ý: CONVERT TO sẽ chuyển đổi dữ liệu hiện có sang charset mới (có thể mất thời gian với bảng lớn). Backup trước khi chạy.