Cách sửa lỗi đối chiếu “utf8mb4_0900_ai_ci” khi nhập cơ sở dữ liệu WordPress

Nếu bạn đang chuyển cài đặt WordPress của mình từ máy chủ MySQL 8 sang MySQL 5.7 (hoặc thấp hơn), rất có thể bạn sẽ gặp phải lỗi 1273 - Đối chiếu không xác định: ‘utf8mb4_0900_ai_ci’ lỗi khi cố gắng nhập cơ sở dữ liệu. Cho dù bạn sử dụng công cụ nào để nhập hoặc xuất cơ sở dữ liệu, bạn cũng không thể thoát khỏi lỗi này.

Tuy nhiên, nếu trước đây bạn đã chạy blog của mình trên máy chủ MySQL 5.7 và gần đây đã chuyển sang MySQL 8 nhưng bây giờ chuyển trở lại MySQL 5.7, thì các bảng WordPress cốt lõi (bài đăng, phân loại, tùy chọn, nhận xét, v.v.) và bất kỳ plugin nào bạn đã cài đặt trên máy chủ MySQL 5.7 vẫn phải sử dụng đối chiếu “utf8mb4_unicode_520_ci”.

Bạn có thể nhập tất cả các bảng từ cơ sở dữ liệu của mình sử dụng đối chiếu “utf8mb4_unicode_520_ci”. Vì vậy, những gì bạn cần làm là tìm các bảng trong cơ sở dữ liệu sử dụng đối chiếu “utf8mb4_0900_ai_ci” và loại trừ chúng khỏi tệp sao lưu cơ sở dữ liệu đã xuất.

🔎 Tìm bảng nào sử dụng đối chiếu “utf8mb4_0900_ai_ci”

Bạn cần tìm bảng nào trong cơ sở dữ liệu của mình sử dụng đối chiếu “utf8mb4_0900_ai_ci” để chúng tôi có thể loại trừ các bảng đó khi xuất cơ sở dữ liệu.

Nếu bạn có quyền truy cập SSH vào máy chủ và thông tin xác thực truy cập cơ sở dữ liệu (mà bạn hoàn toàn có thể lấy từ tệp wp-config.php), bạn có thể chạy lệnh sau để dễ dàng tìm thấy các bảng có đối chiếu “utf8mb4_0900_ai_ci”.

mysqlshow -u tên người dùng -p - cơ sở dữ liệu trạng thái | grep "utf8mb4_0900_ai_ci"

? Thay thế cái tên tài khoảncơ sở dữ liệu với Cơ sở dữ liệu và Tên người dùng của bạn trong lệnh trên.

Nhập mật khẩu người dùng Cơ sở dữ liệu của bạn khi được nhắc Nhập mật khẩu: và bạn sẽ có danh sách các bảng sử dụng đối chiếu “utf8mb4_0900_ai_ci” trong cơ sở dữ liệu của mình.

Các bảng sử dụng đối chiếu “utf8mb4_0900_ai_ci” chỉ nên là các plugin mà bạn đã cài đặt sau khi chuyển sang MySQL 8. Viết ra tên của các bảng để bạn có thể loại trừ chúng trong lần xuất cơ sở dữ liệu tiếp theo.

💡 Mẹo

Nếu bạn không truy cập SSH vào máy chủ, hãy tải xuống tệp cơ sở dữ liệu .sql trên máy tính của bạn và mở nó bằng trình soạn thảo văn bản như Notepad ++ và sử dụng chức năng tìm kiếm (Ctrl + F) để tìm bảng nào sử dụng “utf8mb4_0900_ai_ci” đối chiếu.

Xuất cơ sở dữ liệu ngoại trừ bảng đối chiếu “utf8mb4_0900_ai_ci”

Bây giờ bạn đã có tên của các bảng bằng cách sử dụng đối chiếu “utf8mb4_0900_ai_ci”, bạn có thể xuất tệp sao lưu cơ sở dữ liệu mới không bao gồm các bảng “utf8mb4_0900_ai_ci” để bạn có thể nhập tệp đó vào cài đặt WordPress chạy trên máy chủ MySQL 5.7.

Giả sử bạn đã sử dụng WP-CLI để xuất / nhập cơ sở dữ liệu WordPress, hãy chạy lệnh sau để xuất cơ sở dữ liệu của bạn trong khi loại trừ một số bảng.

wp db export --exclude_tables = table_name, table_name, table_name

? Thay thế tên_bảng trong lệnh trên với tên thực của bảng sử dụng đối chiếu “utf8mb4_0900_ai_ci”.

Đó là nó. Giờ đây, bạn có thể dễ dàng nhập cơ sở dữ liệu WordPress của mình sang máy chủ mới chạy MySQL 5.7.

? Lưu ý quan trọng

Đối với các bảng cơ sở dữ liệu mà bạn đã loại trừ khỏi bản sao lưu, hãy đảm bảo tạo lại theo cách thủ công dữ liệu của chúng trên máy chủ mới. Vì các bảng đó chỉ dành cho plugin, hãy kiểm tra xem các plugin đó có cung cấp cách xuất dữ liệu trong cài đặt plugin hay không hoặc định cấu hình lại plugin trên máy chủ mới giống như cách nó được thiết lập trên máy chủ cũ.