NỘI DUNG
Hướng dẫn này sẽ giúp bạn thay đổi collation của một database trong phpMyAdmin một cách dễ dàng.
1. Collation là gì?
Collation trong cơ sở dữ liệu (database) xác định cách các chuỗi ký tự được so sánh và sắp xếp. Nó ảnh hưởng đến:
- So sánh chuỗi: Ví dụ, phân biệt chữ hoa/thường, dấu tiếng Việt.
- Sắp xếp dữ liệu: Quy tắc sắp xếp các ký tự (alphabet, ký tự đặc biệt, emoji).
- Hỗ trợ ký tự: Đảm bảo lưu trữ và hiển thị đúng các ký tự tiếng Việt, emoji, hoặc ngôn ngữ khác.
Mỗi collation thuộc về một character set (charset), ví dụ:
utf8mb4
là charset hỗ trợ đầy đủ Unicode, bao gồm cả emoji.utf8mb4_unicode_ci
là một collation phổ biến thuộc charsetutf8mb4
.
2. Tại sao cần thay đổi Collation?
Bạn có thể cần thay đổi collation khi:
- Database không hỗ trợ lưu trữ hoặc hiển thị đúng tiếng Việt (ví dụ: “Bà Nội” hiển thị thành “BÃ Nội”).
- Muốn hỗ trợ emoji trong ứng dụng (như biểu tượng 😊, 👍).
- Cần đảm bảo dữ liệu được sắp xếp hoặc tìm kiếm chính xác theo ngôn ngữ cụ thể.
- Di chuyển database giữa các hệ thống có cấu hình khác nhau.
3. Charset và Collation khuyến nghị cho tiếng Việt và Emoji
Để hỗ trợ tốt tiếng Việt (bao gồm dấu) và emoji, bạn nên sử dụng:
Charset: utf8mb4
- Hỗ trợ đầy đủ Unicode, bao gồm các ký tự tiếng Việt và emoji.
- Là phiên bản cải tiến của
utf8
, khắc phục giới hạn về lưu trữ emoji.
Collation: utf8mb4_unicode_ci
- Quy tắc sắp xếp và so sánh dựa trên chuẩn Unicode.
- Không phân biệt chữ hoa/thường (
ci
= case-insensitive). - Hỗ trợ tốt tiếng Việt và các ký tự đặc biệt.
Lý do chọn utf8mb4_unicode_ci:
- Hỗ trợ tất cả các ký tự Unicode, kể cả emoji (như 😊, 🌟).
- Đảm bảo so sánh và sắp xếp chính xác cho tiếng Việt (ví dụ: “a”, “á”, “à” được xử lý đúng).
- Phù hợp với các ứng dụng web hiện đại, đặc biệt khi tích hợp với các framework như Laravel, WordPress.
Lưu ý: Nếu bạn cần phân biệt chữ hoa/thường, có thể chọn utf8mb4_bin
thay vì utf8mb4_unicode_ci
.
4. Hướng dẫn thay đổi Collation trong phpMyAdmin
Lưu ý: Những thao tác vào Database là các thao tác hết sức cẩn trọng. Do đó bạn hãy sao lưu databasse trước khi quyết định thực hiện các thay đổi.
Dưới đây là các bước chi tiết để thay đổi collation cho database, table, hoặc column trong phpMyAdmin.
Bước 1: Đăng nhập vào phpMyAdmin
Tuỳ vào Control Panel hoặc kịch bản script bạn dùng có cách vào khác nhau. Nhưng hiện tại tôi sử dụng cPanel có thể vào trực tiếp trong giao diện.

Bước 2: Chọn Database
Trong giao diện phpMyAdmin, ở cột bên trái, nhấp vào tên database mà bạn muốn thay đổi collation. Giao diện chính sẽ hiển thị danh sách các bảng trong database.

Bước 3: Thay đổi Collation cho toàn bộ Database
Sau khi chọn Database nhấp vào tab Operations (Thao tác) ở menu trên cùng.

Trong phần Collation (Bảng mã đối chiếu), bạn sẽ thấy một dropdown chứa danh sách các collation khả dụng. Chọn collation mong muốn, ví dụ: utf8mb4_unicode_ci
. Nhấp vào nút Go (Thực hiện) để áp dụng thay đổi.
Lưu ý: Thay đổi collation ở cấp database chỉ áp dụng cho các bảng mới được tạo sau đó. Để thay đổi các bảng có sẵn bạn hãy tick vào 2 ô như ảnh

Sau khi đổi xong, bạn hãy quay lại Database và kiểm tra. Nếu đã thay đổi như ảnh là thành công.

6. Một số lưu ý quan trọng
- Hiệu suất: utf8mb4 sử dụng nhiều dung lượng hơn utf8 hoặc latin1 do hỗ trợ ký tự 4 byte (emoji). Đảm bảo server đủ tài nguyên.
- Tương thích: Kiểm tra ứng dụng (PHP, Python, v.v.) sử dụng kết nối database với utf8mb4. Ví dụ, trong PHP:
$pdo = new PDO("mysql:host=localhost;dbname=ten_database;charset=utf8mb4", "username", "password");
- Phiên bản MySQL: utf8mb4 yêu cầu MySQL 5.5.3 trở lên. Kiểm tra phiên bản MySQL trong phpMyAdmin (trang chủ > Database server > Server version).
- WordPress: Nếu dùng WordPress, đảm bảo tệp wp-config.php có dòng:
define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', 'utf8mb4_unicode_ci');
7. Một số câu lệnh SQL thường dùng
7.1. Đổi charset của database:
Thay ten_database bằng tên database của bạn.
ALTER DATABASE `ten_database` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
7.2. Đổi charset của bảng:
Thay ten_bang bằng tên bảng.
ALTER TABLE `ten_bang` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
7.3. Kiểm tra cột
Thay ten_bang, ten_cot, và kiểu dữ liệu (VARCHAR(255)) phù hợp.
ALTER TABLE `ten_bang` MODIFY `ten_cot` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
8. Kết luận
Thay đổi collation trong phpMyAdmin là một quá trình đơn giản nhưng cần cẩn thận để tránh mất dữ liệu. Sử dụng utf8mb4 và utf8mb4_unicode_ci là lựa chọn tối ưu để hỗ trợ tiếng Việt và emoji. Luôn sao lưu dữ liệu trước khi thực hiện thay đổi và kiểm tra kỹ sau khi hoàn tất.