Mam bazę danych WordPress na moim komputerze lokalnym, którą chcę przenieść do hostowanego phpMyAdmin na cPanel. Jednak gdy próbuję zaimportować bazę danych do środowiska, ciągle pojawia się ten błąd:
#1273 - Unknown collation: 'utf8mb4_unicode_ci'
Próbowałem już wyszukiwać w Google i jedynym rozwiązaniem, jakie mogę znaleźć, jest ten jeden błąd phpmysql - # 1273 - # 1273 - Nieznane sortowanie: „utf8mb4_general_ci”, które jak na razie nie jest zbyt pomocne. Próbowałem usunąć pliki cookie, ale nadal nie działa. Proszę pomóż!
mysql
wordpress
phpmyadmin
cpanel
Wairimu Murigi
źródło
źródło
Odpowiedzi:
Miałem ten sam problem, ponieważ wszystkie nasze serwery obsługują starsze wersje MySQL. Można to rozwiązać, uruchamiając skrypt PHP. Zapisz ten kod w pliku i uruchom go, wprowadzając nazwę bazy danych, użytkownika i hasło, a zmieni to sortowanie z
utf8mb4/utf8mb4_unicode_ci
nautf8/utf8_general_ci
źródło
mysqldump --compatible=mysql4
db-convert.php
mysqldump --compatible=mysql4
lub odpowiedź poniżej jest lepszą opcją. Nie sądzę, aby rozsądnym pomysłem było zmienić coś takiego na stronie na żywo. Lepiej wyeksportować w odpowiednim formacie lub, jeśli nie ma takiej opcji, wyeksportuj wyeksportowany plik.Technika w tym poście działała dla mnie
1) Kliknij kartę „Eksportuj” dla bazy danych
2) Kliknij przycisk opcji „Niestandardowy”
3) Przejdź do sekcji zatytułowanej „Opcje specyficzne dla formatu” i zmień menu rozwijane „System bazy danych lub starszy serwer MySQL, aby zmaksymalizować kompatybilność danych wyjściowych z:” z BRAK na MYSQL40.
4) Przewiń w dół i kliknij „GO”.
Nie jestem pewien, czy to spowoduje utratę danych, jednak za jednym razem, gdy tego spróbowałem, nie zauważyłem żadnej. Ani nikt, kto odpowiedział na forach powiązanych z powyższym.
Edytuj 8/12/16 - Wierzę, że eksportowanie bazy danych w ten sposób powoduje utratę danych zapisanych w widżetach Black Studio TinyMCE Visual Editor , chociaż nie przeprowadziłem wielu testów w celu potwierdzenia.
źródło
Jeśli
.sql
plik został już wyeksportowany , najlepiej jest znaleźć i zastąpić następujące elementy, jeśli masz je w swoim pliku:utf8mb4_0900_ai_ci
doutf8_unicode_ci
utf8mb4
doutf8
utf8_unicode_520_ci
doutf8_unicode_ci
Zastąpi
utf8mb4_unicode_ci
toutf8_unicode_ci
. Teraz idziesz do swojego phpMyAdmin cPanel i ustawiasz sortowanie DButf8_unicode_ci
poprzez Operacje> Sortowanie .Jeśli eksportujesz do pliku
.sql
, lepiej zmienić format, w jaki sposób eksportujesz plik. Sprawdź odpowiedź Evstera (jest na tej samej stronie)źródło
sed -i.bak s/utf8mb4/utf8/g FILE_NAME
. Spowoduje to znalezienie wszystkich wystąpieńutf8mb4
w FILE_NAME i zastąpienie goutf8
podczas zapisywania kopii oryginalnego pliku w FILE_NAME.bak. Być może trzeba będzie go dostosować, aby określić dokładną koalicję w twoim przypadku, ale to dopiero początek :)vi dump.sql
a następnie w tym poprzez::%s/uf8mb4/utf8/g
.utf8_0900_ai_ci
zutf8_unicode_ci
używam tego w systemie Linux:
następnie przywróć plik_pliku.sql
źródło
sed -i '' ....
działased -i 's/utf8_0900_ai_ci/utf8_general_ci/g' your_file.sql
Wordpress 4.2 wprowadził obsługę kodowania znaków „utf8mb4” ze względów bezpieczeństwa , ale obsługuje go tylko MySQL 5.5.3 i nowsze . Sposób, w jaki instalator (i aktualizator) sobie z tym radzi, polega na sprawdzeniu wersji MySQL, a baza danych zostanie uaktualniona do utfmb4 tylko wtedy, gdy jest obsługiwana .
Brzmi świetnie w teorii, ale problem (jak odkryłeś) polega na migracji baz danych z serwera MySQL, który obsługuje utf8mb4 na taki, który tego nie robi. Chociaż odwrotnie powinno działać, jest to w zasadzie operacja jednokierunkowa.
Jak podkreślił Evster ty może mieć sukces przy użyciu funkcji phpMyAdmin za „Eksport”. Użyj opcji „ Metoda eksportu: niestandardowa ” i „ System bazy danych lub starszy serwer MySQL, aby zmaksymalizować kompatybilność danych wyjściowych z: ” rozwijanym menu wybierz „ MYSQL 40 ”.
W przypadku eksportu z wiersza poleceń za pomocą mysqldump. Spójrz na flagę:
Uwaga: Jeśli w bazie danych znajdują się 4-bajtowe znaki, zostaną one uszkodzone.
Wreszcie, dla każdego, kto korzysta z popularnej wtyczki WP Migrate DB PRO, użytkownik w tym wątku Wordpress.org informuje, że migracja jest zawsze obsługiwana poprawnie, ale nie mogłem znaleźć niczego oficjalnego.
Obecnie wydaje się, że nie ma możliwości zrezygnowania z aktualizacji bazy danych. Jeśli więc używasz przepływu pracy, w którym migrujesz witrynę z serwera lub hosta lokalnego za pomocą MySQL> 5.5.3, do takiego, który używa starszej wersji MySQL, możesz mieć pecha.
źródło
TYPE=MyISAM
co zostało usunięte w wersji 5.1. Wyszukaj i zamień naENGINE=MyISAM
. Nie mogłem tego obejść za pomocąmysqldump
opcji wyjściowych.W moim przypadku okazało się, że mój
nowy serwer działał
MySQL 5.5
,stary serwer działał
MySQL 5.6
.Wystąpił więc ten błąd podczas próby zaimportowania
.sql
pliku, który wyeksportowałem ze starego serwera.MySQL 5.5 nie obsługuje
utf8mb4_unicode_520_ci
, aleMySQL 5.6.
Aktualizacja
MySQL 5.6
na nowym serwerze rozwiązała sortowanie błąd!Jeśli chcesz zachować MySQL 5.5, możesz:
- wykonać kopię wyeksportowanego
.sql
pliku- zastąpić wystąpienia
utf8mb4unicode520_ci
iutf8mb4_unicode_520_ci
... za pomocą
utf8mb4_unicode_ci
- zaimportować zaktualizowany
.sql
plik.źródło
mysql-server-5.6
pakiet, który możesz zainstalować, który automatycznie usunie wersję 5.5).W pliku wp-config.php znajduje się wiersz:
Jeśli postępujesz zgodnie z instrukcjami Markouver / Evster , nie zapomnij zmienić tej linii na serwerze produkcyjnym na
w celu naprawy zepsutych 4-bajtowych znaków
źródło
define('DB_COLLATE', 'utf8_general_ci');
. To mi pomogło.Po długich badaniach znalazłem rozwiązanie powyższego:
Najpierw zmienisz domyślną wartość wp-config.php> Baza danych DB_CHARSET na „utf8”
Kliknij kartę „Eksportuj” dla bazy danych
Kliknij przycisk „Niestandardowy”
Przejdź do sekcji zatytułowanej „Opcje specyficzne dla formatu” i zmień menu rozwijane „System baz danych lub starszy serwer MySQL, aby zmaksymalizować kompatybilność danych wyjściowych z:” z BRAK na MYSQL40.
Przewiń w dół i kliknij Idź
Więc jesteś włączony.
źródło
Wygląda na to, że Twój host nie zapewnia wersji MySQL, która może uruchamiać tabele z sortowaniem utf8mb4.
Tabele WordPress zostały zmienione na utf8mb4 w wersji 4.2 (wydanej 23 kwietnia 2015 r.) W celu obsługi Emoji, ale do korzystania z niego potrzebny jest MySQL 5.5.3. 5.5.3 pochodzi z marca 2010 r., więc zwykle powinna być powszechnie dostępna. Czy sprawdzasz, czy Twój hosting zapewnia tę wersję?
Jeśli nie, a aktualizacja nie jest możliwa, może być konieczne znalezienie innego hosta do uruchomienia najnowszych wersji WordPress (i zawsze powinieneś to zrobić ze względów bezpieczeństwa).
źródło
Rozwiązałem więc w ten sposób, od MySQL 5.6 do MySQL 5.5:
(Opcjonalnie) Utwórz
.sql.gz
plik:Wyjaśnienie
Jak wyjaśniono w tej odpowiedzi , jest to tylko odpowiednik tych opcji z phpMyAdmin: „System bazy danych lub starszy serwer MySQL w celu zmaksymalizowania kompatybilności danych wyjściowych z:” rozwijanym menu wybierz „MYSQL 40” .
Potrzebujemy tego, aby rozwiązać ten problem:
źródło
$ sed -i'' 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql
. Jeśli chcesz zachować kopię, tak jakdatabase_name.sql.bak
przed sed, wymień:$ sed -i'bak' 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql
sed
.--compatible=ansi
opcjiWystąpił również ten problem. Rozwiązaniem, które działało dla mnie, było otwarcie lokalnej bazy danych za pomocą Sequel Pro oraz zaktualizowanie Kodowania i Sortowania do utf8 / utf8_bin dla każdej tabeli przed importem.
źródło
Najłatwiejszym sposobem jest wyeksportowanie bazy danych
.sql
, otwarcie jej w Notepad ++ oraz „Wyszukaj i zamień”utf8mb4_unicode_ci
do,utf8_unicode_ci
a także zastąputf8mb4
doutf8
. Nie zapomnij również zmienić sortowania bazy danych nautf8_unicode_ci
(Operacje> Sortowanie).źródło
otwórz plik sql w Notepad ++, a
ctrl + H.
następnie wpisz „utf8mb4
” podczas wyszukiwania i „utf8
” po zamianie. Problem zostanie wówczas rozwiązany.źródło