NGUYEN XUAN CUONG

https://nxcuong.ued.vn

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
MySQL
2022 04 10 23 00 24
CleanShot 2022 04 10 at 23 17 27@2x 1024x250

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 CHARSET và COLLATE 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

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.


 
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây