Skip to content Skip to main navigation Skip to footer

Sửa lỗi Unknown collation: utf8mb4_0900_ai_ci

Trong quá trình di chuyển cơ sở dữ liệu database từ máy chủ cũ sang máy chủ mới và import vào. Bạn sẽ gặp một lỗi thông báo Unknown collation: utf8mb4_0900_ai_ci như ảnh bên dưới.

Sửa lỗi Unknown collation: utf8mb4_0900_ai_ci

Nguyên nhân chủ yêu và thường xảy ra nhất là do phiên bản MySQL/MariaDB của 2 máy chủ không giống nhau, nên khi import vào máy chủ mới collation ID không khớp.

Với lỗi này bạn có thể xử lý bằng 2 cách sau:

Cách 1: Thay đổi phiên bản MySQL/MariaDB

Với cách này bạn cần hạ hoặc nâng cấp phiên bản MySQL/MariaDB ở máy chủ mới sao cho cùng phiên bản với máy chủ cũ để giải quyết vấn đề. Tuy nhiên có một bất cập là việc thay đổi phiên bản rất phức tạp và nhà phát triển không cho phép bạn hạ cấp.

Bạn chỉ có thể gở bỏ và cài đặt mới lại. Và việc này sẽ gặp nhiều rủi ro với máy chủ đã và đang có webiste hoạt động.

Cách 2: Thay đổi nội dung bảng mã của Database

Cách này sẽ thay đổi CHARSETCOLLATE của database. Với cách này sẽ đơn giản nhiều hơn và rủi ro thấp hơn.

  • Thay đổi utf8mb4_0900_ai_ci thành utf8mb4_general_ci
  • Thay đổi CHARSET=utf8mb4 thành CHARSET=utf8

Trên hệ thống Linux có một thế mạnh là bạn có thể thay đổi nội dụng của file với một dòng lệnh. Ở đây mình sử dụng lệnh sed

Chú thích:

  • Lệnh 1: Sẽ tìm trong file backup.sql. Nếu có dòng utf8mb4_0900_ai_ci sẽ tự động thay thế bằng utf8_general_ci
  • Lệnh 2: Sẽ tìm trong file backup.sql. Nếu có dòng CHARSET=utf8mb4 sẽ tự động thay thế bằng CHARSET=utf8

Lưu ý: Thay backup.sql bằng tên file database của bạn

AZDIGI Tutorial
Lệnh 1: sed -i 's/utf8mb4_0900_ai_ci/utf8_general_ci/g' backup.sql  
Lệnh 2: sed -i 's/CHARSET=utf8mb4/CHARSET=utf8/g' backup.sql  
    

Sau khi chạy lệnh sửa xong. Bạn có thể sử dụng Database đó để import lại.

Chúc bạn thực hiện thành công.

Nếu các bạn cần hỗ trợ các bạn có thể liên hệ bộ phận hỗ trợ theo các cách bên dưới: