# 1273 - Nieznane zestawienie: „utf8mb4_unicode_520_ci”


157

Mam witrynę WordPress na moim lokalnym serwerze WAMP . Ale kiedy przesyłam bazę danych na serwer live, pojawia się błąd

#1273  Unknown collation: utf8mb4_unicode_520_ci

Każda pomoc będzie mile widziana!


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

4
W morzu rozwiązań typu znajdź i zamień poniżej, nie zapomnij najpierw sprawdzić odpowiedzi @ SherylHohman - po prostu zaktualizuj do mariadb / mysql 5.6, aby Twój serwer obsługiwał to sortowanie.
squarecandy


Jest tu również krótki przewodnik ( wpza.net/unknown-collation-utf8mb4_unicode_520_ci ), który wyjaśnia wszystkie 3 kroki, które powinieneś wykonać, aby upewnić się, że zrobiłeś wszystko.
WPZA

Sprawdzić to rozwiązanie tutaj dla # 1273 - Nieznany sortowania: 'utf8mb4_0900_ai_ci' freakyjolly.com/...
Code Spy

Odpowiedzi:


217

Możesz rozwiązać ten problem, znajdując

ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

w .sqlpliku i zamieniając go z

ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

28
Polecam odpowiedź Sabby ( stackoverflow.com/a/44122258/168309 ), ponieważ zachowuje utf8mb4
Amir

5
Poniższe rozwiązanie @Sabba Keynejad jest moim zdaniem lepsze, ponieważ zachowuje mb4, powinieneś spróbować najpierw tego.
Maor Barazany

Uwaga, musiałem zamienić to w wielu miejscach w pliku SQL. Były też miejsca, w których musiałem zrobić stackoverflow.com/a/44122258/1436129 poniżej.
aubreypwd

Właściwie okazało się, że ta odpowiedź zadziałała, podczas gdy powiązana odpowiedź Sabby nie. Prawdopodobnie z powodu domyślnych ustawień mojej instalacji MySql. +1
Gone Coding

to nie działa, teraz daje błąd: COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'utf8mb4' , i zastąpiły utf8mb4_unicode_520_cize utf8mb4_unicode_cii to działa, jak na odpowiedź Sabba użytkownika.
Haritsinh Gohil

286

Uważam, że ten błąd jest spowodowany tym, że na serwerze lokalnym i serwerze rzeczywistym działają różne wersje MySQL. Aby rozwiązać ten problem:

  1. Otwórz plik sql w edytorze tekstu
  2. Znaleźć i zastąpić wszystkie utf8mb4_unicode_520_cizutf8mb4_unicode_ci
  3. Zapisz i prześlij do nowej bazy danych mySql

Mam nadzieję, że to pomożewprowadź opis obrazu tutaj


4
PIEKŁO NIE !!! Zostało szeroko udokumentowane, że utf8mb4_unicode_520_cima znacznie lepszą obsługę UTF-8 niż utf8mb4_unicode_ci! Sos: mysql.rjweb.org/doc.php/charcoll#best_practice z wizualnym wyjaśnieniem udowadniającym, że 520_ci jest lepszy tutaj: mysql.rjweb.org/utf8_collations.html
Jan

5
@John, Artykuły, do których prowadzą linki, nie chronią tego komentarza. Ich „tak” nie może być nawet właściwie określone na podstawie ich przesłanek. Ogólnie cały artykuł jest słabo napisany, chociaż wydaje się, że są tam dobre informacje. Sortowanie 520 wykorzystuje nowszą wersję algorytmu sortowania Unicode (UCA - wersja 5.2.0) z różnymi wagami, ale stwierdzenie, że „ma znacznie lepszą obsługę UTF-8” wydaje się czymś więcej niż rozciągnięciem.
Gremio

Załóżmy, że treść Standardów (Unicode) zwykle powoduje, że każda nowsza wersja (5.20) jest „lepsza” niż starsza wersja (4.0).
Rick James,

To najlepsza odpowiedź.
Niby

Proponuję to rozwiązanie, ponieważ zastępuje wszystkie wystąpienia „utf8mb4_unicode_520_ci”. Podczas gdy odpowiedź savani sandip pozostawia trochę.
Rakesh

49

W moim przypadku okazało się, że mój
nowy serwer działał MySQL 5.5,
stary MySQL 5.6.
Tak więc pojawił się ten błąd podczas próby zaimportowania .sqlpliku, który wyeksportowałem ze starego serwera.

MySQL 5.5 nie obsługuje utf8mb4_unicode_520_ci, ale
MySQL 5.6 tak.

Aktualizacja do MySQL 5.6na nowym serwerze rozwiązała problem sortowania!

Jeśli chcesz zachować MySQL 5.5, możesz:
- wykonać kopię wyeksportowanego .sqlpliku
- zamienić instancje utf8mb4unicode520_cii utf8mb4_unicode_520_ci
... na utf8mb4_unicode_ci
- zaimportować zaktualizowany .sqlplik.


2
Jest to absolutnie najlepszy sposób, aby to zrobić, jeśli masz pełną kontrolę nad swoim serwerem. Zaktualizuj nowy serwer, aby pasował do starego. Jeśli nie masz dostępu do uaktualnienia nowej lokalizacji serwera, metoda znajdowania i zamiany prawdopodobnie będzie w porządku, ale w każdym przypadku, gdy możesz po prostu wykonać to uaktualnienie, powinieneś.
squarecandy

1
5.6 oznacza, że dodano 520 .
Rick James,

To powinna być prawidłowa odpowiedź. Większość innych rozwiązań przypomina bardziej hacki. Dzięki @SherylHohman
sawyerrken

30

Otwórz plik sql w swoim edytorze tekstu;

1. Wyszukaj: utf8mb4_unicode_ci Zastąp: utf8_general_ci (Zastąp wszystko)

2. Wyszukaj: utf8mb4_unicode_520_ci Zastąp: utf8_general_ci (Zastąp wszystko)

3. Wyszukaj: utf8mb4 Zamień: utf8 (Zamień wszystko)

Zapisz i prześlij!


Naprawdę się cieszę, że znalazłem rozwiązanie tego problemu, od kilku dni otrzymuję ten błąd # 1273 i po prostu nie mogłem znaleźć rozwiązania tego problemu
flying-dev

Ratownik. Dzięki!
robbclarke


14

łatwa wymiana

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

2
W systemie macOS:sed -i '' 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' your_sql_file.sql
Osvaldas,


6

Znajdź i zamień:

utf8mb4_unicode_520_ci

z

utf8_general_ci

w całym pliku sql


3
generali utf8oba są krokami wstecz.
Rick James,

3

Spóźniony na imprezę, ale w przypadku WORDPRESSinstalacji:

#1273 - Unknown collation: 'utf8mb4_unicode_520_ci

W phpmyadmin, pod export method> Format-specific options(eksport niestandardowy)

Ustawić : MYSQL40

Jeśli spróbujesz teraz zaimportować, możesz teraz otrzymać kolejny komunikat o błędzie:

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

Dzieje się tak, ponieważ starsza TYPEopcja, która była synonimem, ENGINEzostała usunięta w MySQL 5.5.

Otwórz .sqlplik, wyszukaj i zamień wszystkie instancje

od TYPE=doENGINE=

Teraz import powinien przebiegać bezproblemowo.


3

Uzyskiwanie błędu sortowania # 1273 - Nieznane sortowanie: „utf8mb4_unicode_520_ci” jest spowodowane różnicą między wersją MySQL, z której eksportujesz, a naszym serwerem MySQL, do którego importujesz. Zasadniczo biblioteka Wordpress dla nowszych wersji sprawdza, na jakiej wersji SQL działa Twoja witryna. Jeśli korzysta z MySQL w wersji 5.6 lub nowszej, zakłada użycie nowego i ulepszonego algorytmu sortowania Unicode (UCA) o nazwie „utf8mb4_unicode_520_ci”. To jest świetne, chyba że w końcu przeniesiesz swoją witrynę WordPress z nowszej wersji MySQL 5.6 do starszej wersji MySQL, starszej niż 5.6.

Aby rozwiązać ten problem, będziesz musiał albo edytować plik eksportu SQL, wyszukiwać i zamieniać, zmieniając wszystkie wystąpienia „utf8mb4_unicode_520_ci” na „utf8mb4_unicode_ci”. Lub wykonaj poniższe czynności, jeśli masz PHPMyAdmin:

  1. Kliknij kartę Eksportuj dla bazy danych
  2. Kliknij przycisk opcji Niestandardowe.
  3. Przejdź do sekcji zatytułowanej Opcje specyficzne dla formatu i zmień listę rozwijaną dla Systemu bazy danych lub starszego serwera MySQL, aby zmaksymalizować zgodność danych wyjściowych z: z NONE na MYSQL40.
  4. Przewiń w dół i kliknij GO.

1

W moim przypadku zastępuję go utf8_general_cisedem w ten sposób:

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 

Po tym mogę go bez problemu zaimportować.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.