Khắc phục lỗi MySQL #1273: Unknown Collation 'utf8mb4_unicode_520_ci'

intermediate📝 WordPress2026-07-09| MySQL 5.5 hoặc cũ hơn, MariaDB 10.0 hoặc cũ hơn, phpMyAdmin, WordPress Migration

Error Message

#1273 - Unknown collation: 'utf8mb4_unicode_520_ci'
#wordpress#mysql#database#migration#phpmyadmin

Vấn đề

Bạn đang trong quá trình chuyển một trang web WordPress từ môi trường local như LocalWP hoặc XAMPP lên máy chủ thực tế. Mọi thứ dường như ổn thỏa cho đến khi bạn nhấn nút 'Import' trong phpMyAdmin. Đột nhiên, quá trình bị dừng lại với thông báo đầy khó chịu này:

#1273 - Unknown collation: 'utf8mb4_unicode_520_ci'

Lỗi này khiến việc tạo cơ sở dữ liệu bị gián đoạn. Thay vì một trang web hoạt động bình thường, bạn lại nhận được một cơ sở dữ liệu trống và màn hình lỗi "Error establishing a database connection" đáng sợ.

Tại sao lỗi này xảy ra

Nguyên nhân là do sự chênh lệch phiên bản giữa máy chủ nguồn và máy chủ đích. Collation utf8mb4_unicode_520_ci được giới thiệu từ MySQL 5.6 và MariaDB 10.1 để hỗ trợ tiêu chuẩn Unicode 5.2.0. Đây là tiêu chuẩn hiện đại để xử lý emoji và các ký tự phức tạp.

Nếu môi trường local của bạn sử dụng MySQL 8.0 nhưng hosting thực tế vẫn đang chạy phiên bản cũ như MySQL 5.5 (đã hơn 10 năm tuổi), máy chủ sẽ không nhận diện được chỉ dẫn "520_ci". Đơn giản là nó không có collation đó trong thư viện.

Cách 1: Tìm kiếm và thay thế thủ công (Tốt nhất cho file dưới 100MB)

Nếu bạn đã có file .sql, bạn không cần phải xuất (export) lại. Bạn có thể loại bỏ collation không tương thích bằng cách sử dụng các trình soạn thảo văn bản chất lượng như VS Code, Sublime Text hoặc Notepad++.

Các bước thực hiện:

  • Mở file .sql bằng trình soạn thảo của bạn.
  • Nhấn Ctrl + H (hoặc Cmd + H trên Mac) để mở công cụ Tìm kiếm và Thay thế (Find and Replace).
  • Tìm kiếm: utf8mb4_unicode_520_ci
  • Thay thế bằng: utf8mb4_unicode_ci
  • Nhấn Replace All và lưu file lại.

Vẫn thất bại? Một số máy chủ quá cũ thậm chí không hỗ trợ utf8mb4. Nếu lỗi vẫn còn, hãy thử thay thế utf8mb4 bằng utf8utf8mb4_unicode_ci bằng utf8_general_ci. Việc này sẽ hạ cấp cơ sở dữ liệu xuống định dạng tương thích với hầu hết mọi máy chủ từ năm 2005.

# Trước:
CREATE TABLE `wp_posts` (
  ...
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

# Sau:
CREATE TABLE `wp_posts` (
  ...
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Cách 2: Xuất dữ liệu ở chế độ tương thích (Compatibility Mode)

Nếu bạn vẫn còn quyền truy cập vào trang web gốc, bạn có thể thiết lập phpMyAdmin xuất ra một file hoạt động tốt trên các máy chủ cũ.

  • Mở phpMyAdmin trên máy chủ nguồn.
  • Nhấp vào tab Export.
  • Chọn Custom - display all possible options.
  • Tìm phần Format-specific options.
  • Thay đổi cài đặt "Database system or older MySQL server to maximize output compatibility with:" từ NONE thành MYSQL40.
  • Cuộn xuống và nhấn Go.

Việc này bắt buộc quá trình xuất sử dụng cú pháp cũ hơn, phổ biến hơn, giúp bỏ qua lỗi #1273 trong giai đoạn nhập dữ liệu.

Cách 3: Sử dụng Command Line (Tốt nhất cho cơ sở dữ liệu trên 500MB)

Các file SQL lớn sẽ làm treo các trình soạn thảo văn bản thông thường. Nếu bạn đang xử lý một cơ sở dữ liệu khổng lồ, hãy sử dụng lệnh sed để thay thế các chuỗi ký tự trực tiếp trong terminal.

# Chạy lệnh này để thay thế chuỗi collation ngay lập tức
sed -i 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' database_dump.sql

Sau khi lệnh chạy xong, hãy nhập file bằng WP-CLI để đạt tốc độ tối đa:

wp db import database_dump.sql

Kiểm tra lại kết quả

Sau khi hoàn tất việc nhập dữ liệu, hãy dành 60 giây để xác nhận dữ liệu của bạn vẫn ổn sau khi "hạ cấp". Kiểm tra ba điều sau:

  • Cấu trúc bảng: Kiểm tra bảng wp_posts trong phpMyAdmin. Nếu các hàng dữ liệu hiển thị, collation đã được chấp nhận.
  • Chức năng trang web: Truy cập các trang trên WordPress của bạn. Kiểm tra xem hình ảnh và menu có hiển thị đúng không.
  • Ký tự đặc biệt: Tìm các văn bản bị lỗi như é thay vì é. Nếu thấy lỗi này, có thể bạn đã hạ cấp quá sâu xuống utf8_general_ci trong khi nội dung thực tế yêu cầu utf8mb4.

Cách phòng tránh trong tương lai

Cách dễ nhất để tránh lỗi này là giữ cho môi trường phát triển (development) và môi trường thực tế (production) đồng bộ với nhau. Nếu hosting của bạn dùng MySQL 5.5, đừng dùng MySQL 8.0 cho việc phát triển ở local.

Ngoài ra, hãy sử dụng các plugin hỗ trợ di chuyển như WP Migrate Lite hoặc All-in-One WP Migration. Các công cụ này đủ thông minh để tự động nhận diện phiên bản máy chủ và xử lý việc chuyển đổi collation, giúp bạn không bao giờ phải chạm vào một dòng mã SQL nào.

Related Error Notes