# 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!

Shishil Patel
źródło
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
1
Jaka wersja WordPressa? Zobacz make.wordpress.org/core/2015/04/02/the-utf8mb4-upgrade
Rick James
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;
savani sandip
źródło
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

Sabba Keynejad
źródło
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.

SherylHohman
źródło
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!

VUUB
źródło
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
15

po prostu usuń „520_”
utf8mb4_unicode_520_ciutf8mb4_unicode_ci

Shakil Hossain
źródło
14

łatwa wymiana

sed -i 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' your_sql_file.sql
Scard
źródło
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

Jan
źródło
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.

Obmerk Kronen
źródło
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.
Mushfiqur Rahman
źródło
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ć.

Achu
źródło