Bạn gặp lỗi "ERROR 1273 (HY000): Unknown collation: 'utf8mb4_0900_ai_ci'"
khi import file .sql
vào MariaDB trên Ubuntu? Đây là lỗi phổ biến khi dữ liệu được xuất từ MySQL 8.0 với collation không tương thích với MariaDB. Bài viết này sẽ hướng dẫn bạn cách xử lý lỗi nhanh chóng bằng công cụ dòng lệnh sed
– không cần mở file thủ công – để sửa collation và import lại thành công vào cơ sở dữ liệu MariaDB.
Khi bạn export file SQL từ MySQL 8.x (trên server khác hoặc localhost) rồi import vào MariaDB trên Ubuntu, bạn có thể gặp lỗi:
ERROR 1273 (HY000) at line 419: Unknown collation: 'utf8mb4_0900_ai_ci'
Lý do là MariaDB không hỗ trợ collation utf8mb4_0900_ai_ci
— vốn là collation mới chỉ có trong MySQL 8.0 trở lên.
.sql
Bạn sẽ cần sửa file .sql
, thay utf8mb4_0900_ai_ci
bằng một collation tương thích như utf8mb4_unicode_ci
.
sed
để thay thế nhanh (khuyên dùng)Chạy lệnh sau trong Terminal:
sed 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g' input.sql > fixed.sql
Ví dụ thực tế:
sed 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g' ~/backup/shop.themestyle.net.sql > ~/backup/shop.themestyle.net-fixed.sql
Lệnh này sẽ tạo ra file mới:
shop.themestyle.net-fixed.sql
Giả sử bạn đã có database tên là cms_themestyle
, chạy lệnh:
mysql -u root -p cms_themestyle < ~/backup/shop.themestyle.net-fixed.sql
mysql -u root -p --host=127.0.0.1 --port=3306 cms_themestyle < ...
utf8mb4_unicode_ci
hoặc utf8mb4_general_ci
nếu bạn định dùng với MariaDB.my.cnf
:[mysqld]
collation-server = utf8mb4_unicode_ci
character-set-server = utf8mb4
Sau đó khởi động lại MariaDB bằng:
sudo systemctl restart mariadb
Lỗi utf8mb4_0900_ai_ci
là vấn đề phổ biến khi chuyển dữ liệu từ MySQL 8 sang MariaDB. Cách khắc phục đơn giản là thay collation không tương thích bằng collation chuẩn như utf8mb4_unicode_ci
. Trên Ubuntu, bạn có thể dùng sed
để sửa nhanh mà không cần mở file thủ công.