# 1273 - Đối chiếu không xác định: 'utf8mb4_unicode_520_ci'


157

Tôi có một trang web WordPress trên máy chủ WAMP địa phương của tôi . Nhưng khi tôi tải cơ sở dữ liệu của nó lên máy chủ trực tiếp, tôi gặp lỗi

#1273  Unknown collation: utf8mb4_unicode_520_ci

Bất kỳ trợ giúp sẽ được đánh giá cao!


37
sed -i 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' file.sql
Nabil Kadimi

3
Trong một loạt các giải pháp tìm và thay thế bên dưới, đừng quên kiểm tra câu trả lời của @ SherylHohman trước - chỉ cần nâng cấp lên mariadb / mysql 5.6 để máy chủ của bạn hỗ trợ đối chiếu này.
squarecandy

1
Phiên bản nào của WordPress? Xem make.wordpress.org/core/2015/04/02/the-utf8mb4-upTHER
Rick James

Ngoài ra còn có một hướng dẫn nhanh ở đây ( wpza.net/unknown-collation-utf8mb4_unicode_520_ci ) giải thích tất cả 3 bước bạn cần thực hiện để đảm bảo bạn đã hoàn thành mọi việc.
WPZA

Kiểm tra giải pháp này vào đây để # 1273 - Unknown chiếu: 'utf8mb4_0900_ai_ci' freakyjolly.com/...
Mã Spy

Câu trả lời:


216

Bạn có thể giải quyết điều này bằng cách tìm

ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

trong .sqltập tin của bạn và hoán đổi nó với

ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

28
Tôi đề nghị câu trả lời của Sabba ( stackoverflow.com/a/44122258/168309 ) vì nó giữ lại utf8mb4
Amir

5
Theo tôi, giải pháp dưới đây của @Sabba Keynejad tốt hơn, vì nó giữ mb4, bạn nên thử nó trước.
Maor Barazany

Lưu ý, tôi đã phải thay thế điều này ở nhiều nơi trong Tệp SQL. Ngoài ra còn có những nơi tôi phải làm stackoverflow.com/a/44122258/1436129 bên dưới nữa.
aubreypwd

Thực tế tìm thấy câu trả lời này hoạt động khi câu trả lời liên kết của Sabba không. Có lẽ là do cài đặt MySql của tôi mặc định. +1
Mã hóa

nó không phải đang làm việc, bây giờ nó là cho lỗi: COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'utf8mb4' , tôi đã thay thế utf8mb4_unicode_520_civới utf8mb4_unicode_civà nó làm việc, như mỗi câu trả lời sabba của.
Haritsinh Gohil

285

Tôi tin rằng lỗi này là do máy chủ cục bộ và máy chủ trực tiếp đang chạy các phiên bản khác nhau của MySQL. Để giải quyết điều này:

  1. Mở tệp sql trong trình soạn thảo văn bản của bạn
  2. Tìm và thay thế tất cả utf8mb4_unicode_520_cibằngutf8mb4_unicode_ci
  3. Lưu và tải lên db mySql mới

Mong rằng sẽ giúpnhập mô tả hình ảnh ở đây


4
TRỜI ƠI KHÔNG!!! Nó đã được ghi nhận rộng rãi rằng utf8mb4_unicode_520_cinhiều hỗ trợ tốt hơn UTF-8 hơn utf8mb4_unicode_ci! Sốt: mysql.rjweb.org/doc.php/charcoll#best_practice với làm rõ hình ảnh minh 520_ci là vượt trội ở đây: mysql.rjweb.org/utf8_collations.html
John

5
@ John, Các bài viết bạn liên kết không thực sự bảo vệ bình luận đó. "Do đó" của họ thậm chí không thể được nêu chính xác từ tiền đề của họ. Nhìn chung, toàn bộ bài viết được viết kém, mặc dù dường như có một số thông tin tốt ở đó. Đối chiếu 520 sử dụng phiên bản mới hơn của Thuật toán đối chiếu Unicode (UCA - phiên bản 5.2.0) với các trọng số khác nhau, nhưng để nói rằng nó "có hỗ trợ UTF-8 tốt hơn nhiều" có vẻ nhiều hơn.
Gremio

Giả sử rằng phần thân Tiêu chuẩn (Unicode) thường sẽ làm cho mỗi phiên bản mới hơn (5.20) "tốt hơn" so với phiên bản cũ hơn (4.0).
Rick James

Đây là câu trả lời tốt nhất.
Niby

Tôi đề xuất giải pháp này vì nó thay thế tất cả các lần xuất hiện "utf8mb4_unicode_520_ci". Trong khi đó savani sandip trả lời một số.
Rakesh

49

Trong trường hợp của tôi, hóa ra
máy chủ mới của tôi đang chạy MySQL 5.5,
máy chủ cũ đang chạy MySQL 5.6.
Vì vậy, tôi đã gặp lỗi này khi cố gắng nhập.sql tệp tôi đã xuất từ ​​máy chủ cũ của mình.

MySQL 5.5 không hỗ trợ utf8mb4_unicode_520_ci, nhưng
MySQL 5.6 thì có.

Cập nhật lên MySQL 5.6máy chủ mới giải quyết đối chiếu lỗi!

Nếu bạn muốn giữ lại MySQL 5.5, bạn có thể:
- tạo một bản sao của .sqltệp đã xuất của bạn
- thay thế các trường hợp utf8mb4unicode520_ciutf8mb4_unicode_520_ci
... bằng utf8mb4_unicode_ci
- nhập .sqltệp đã cập nhật của bạn .


2
Đây hoàn toàn là cách tốt nhất để làm điều đó nếu bạn có toàn quyền kiểm soát máy chủ của mình. Nâng cấp máy chủ mới để phù hợp với máy chủ cũ. Nếu bạn không có quyền truy cập để nâng cấp vị trí máy chủ mới của mình, phương pháp tìm thay thế có thể sẽ ổn, nhưng trong mọi trường hợp bạn chỉ có thể thực hiện nâng cấp này thay thế, bạn nên làm.
squarecandy

1
5,6 là khi 520 được thêm vào.
Rick James

Đây phải là câu trả lời chính xác. Hầu hết các giải pháp khác giống như hack. Cảm ơn @SherylHohman
sawyerrken

30

Mở tệp sql trong trình soạn thảo văn bản của bạn;

1. Tìm kiếm: utf8mb4_unicode_ci Thay thế: utf8_general_ci (Thay thế tất cả)

2. Tìm kiếm: utf8mb4_unicode_520_ci Thay thế: utf8_general_ci (Thay thế tất cả)

3. Tìm kiếm: utf8mb4 Thay thế: utf8 (Thay thế tất cả)

Lưu và tải lên!


Tôi thực sự rất vui vì tôi đã tìm ra giải pháp của bạn cho vấn đề này, tôi đã gặp lỗi # 1273 này trong nhiều ngày và tôi không thể tìm ra giải pháp cho vấn đề này
bay-dev

Phao cứu sinh. Cảm ơn!
robbclarke


14

dễ dàng thay thế

sed -i 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' your_sql_file.sql

2
Trên macOS:sed -i '' 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' your_sql_file.sql
Osvaldas


6

tìm và thay thế:

utf8mb4_unicode_520_ci

với

utf8_general_ci

trong toàn bộ tập tin sql


3
generalutf8là cả hai bước lùi.
Rick James

3

Đến bữa tiệc muộn, nhưng trong trường hợp điều này xảy ra với WORDPRESScài đặt:

#1273 - Unknown collation: 'utf8mb4_unicode_520_ci

Trong phpmyadmin, dưới export method>Format-specific options (xuất tùy chỉnh)

Đặt thành: MYSQL40

Nếu bạn sẽ cố gắng nhập ngay bây giờ, bây giờ bạn có thể nhận được một thông báo lỗi khác:

1064 - You have an error in your SQL syntax; .....

Đó là bởi vì TYPETùy chọn cũ hơn đồng nghĩa vớiENGINE đã bị xóa trong MySQL 5.5.

Mở của bạn .sql tệp , tìm kiếm và thay thế tất cả các trường hợp

từ TYPE=đếnENGINE=

Bây giờ việc nhập khẩu sẽ diễn ra suôn sẻ.


3

Bắt lỗi đối chiếu # 1273 - Đối chiếu không xác định: 'utf8mb4_unicode_520_ci' là do sự khác biệt của phiên bản MySQL mà bạn xuất và máy chủ MySQL của chúng tôi nhập vào. Về cơ bản, thư viện Wordpress cho phiên bản mới hơn kiểm tra xem phiên bản SQL nào mà trang web của bạn đang chạy. Nếu nó sử dụng phiên bản MySQL 5.6 trở lên, thì nó giả sử sử dụng Thuật toán đối chiếu Unicode mới và được cải tiến (UCA) có tên là ut ut8mb4_unicode_520_ci. Điều này thật tuyệt vời trừ khi bạn kết thúc việc chuyển trang web WordPress của mình từ phiên bản MySQL 5.6 mới hơn sang phiên bản MySQL cũ hơn 5.6 trước.

Để giải quyết vấn đề này, bạn sẽ phải chỉnh sửa tệp xuất SQL của mình và thực hiện tìm kiếm và thay thế, thay đổi tất cả các phiên bản của 'utf8mb4_unicode_520_ci' thành 'utf8mb4_unicode_ci'. Hoặc làm theo các bước dưới đây nếu bạn có PHPMyAdmin:

  1. Bấm vào tab Xuất cho cơ sở dữ liệu
  2. Nhấp vào nút radio Tùy chỉnh.
  3. Đi tới phần có tiêu đề Tùy chọn định dạng cụ thể và thay đổi thả xuống cho hệ thống Cơ sở dữ liệu hoặc máy chủ MySQL cũ hơn để tối đa hóa khả năng tương thích đầu ra với: từ NONE sang MYSQL40.
  4. Cuộn xuống phía dưới và nhấp GO.

1

Trong trường hợp của tôi, tôi thay thế nó utf8_general_cibằng sed như thế này:

sed -i 's/utf8_0900_ai_ci/utf8_general_ci/g' MY_DB.sql 
sed -i 's/utf8mb4_unicode_520_ci/utf8_general_ci/g' MY_DB.sql 

Sau đó, tôi có thể nhập nó mà không có vấn đề gì.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.