У меня есть база данных WordPress на моей локальной машине, которую я хочу перенести в хостинг phpMyAdmin на cPanel. Однако, когда я пытаюсь импортировать базу данных в среду, я получаю эту ошибку:
#1273 - Unknown collation: 'utf8mb4_unicode_ci'
Я попытался поискать в Google, и единственное решение, которое я могу найти, это ошибка phpmysql - # 1273 - # 1273 - Неизвестное сопоставление: 'utf8mb4_general_ci', которое, к настоящему времени, не сильно помогает. Я пытался очистить куки, но он все равно не работает. Пожалуйста помоги!
mysql
wordpress
phpmyadmin
cpanel
Вайриму Муриги
источник
источник
Ответы:
У меня была такая же проблема, как на всех наших серверах работают старые версии MySQL. Это можно решить, запустив скрипт PHP. Сохраните этот код в файл и запустите его, введя имя базы данных, имя пользователя и пароль, и он изменит сортировку с
utf8mb4/utf8mb4_unicode_ci
наutf8/utf8_general_ci
источник
mysqldump --compatible=mysql4
db-convert.php
mysqldump --compatible=mysql4
или ответ ниже - лучший вариант. Я не думаю, что это разумная идея изменить что-то подобное на живом сайте. Лучше экспортировать в правильном формате, или, если это не вариант, отредактируйте экспортированный файл.Техника в этом посте сработала для меня
1) Нажмите на вкладку «Экспорт» для базы данных
2) Нажмите кнопку «Пользовательский»
3) Перейдите в раздел «Опции, зависящие от формата» и измените раскрывающийся список «Система баз данных или более старый сервер MySQL, чтобы максимизировать совместимость вывода с:» с NONE на MYSQL40.
4) Прокрутите вниз и нажмите «GO».
Я не уверен, вызывает ли это какую-либо потерю данных, однако за один раз, когда я попробовал это, я не заметил ничего. Никто не отвечал на форумах, связанных с выше.
Редактировать 8/12/16 - я считаю, что экспорт базы данных таким образом приводит к потере данных, сохраненных в виджетах Black Studio TinyMCE Visual Editor , хотя я не проводил несколько тестов для подтверждения.
источник
Если вы уже экспортировали
.sql
файл, лучше всего найти и заменить следующее, если они есть в вашем файле:utf8mb4_0900_ai_ci
вutf8_unicode_ci
utf8mb4
вutf8
utf8_unicode_520_ci
вutf8_unicode_ci
Он заменит
utf8mb4_unicode_ci
наutf8_unicode_ci
. Теперь вы идете в свою phpMyAdmin cPanel и устанавливаете параметры сортировки БДutf8_unicode_ci
через Операции> Параметры сортировки .Если вы экспортируете в a
.sql
, лучше изменить формат экспорта файла. Проверьте ответ Евстера (он находится на той же странице, что и этот)источник
sed -i.bak s/utf8mb4/utf8/g FILE_NAME
. Это найдет все вхожденияutf8mb4
в FILE_NAME и заменит егоutf8
при сохранении копии исходного файла в FILE_NAME.bak. Возможно, вам придется настроить его, чтобы указать точную коалицию в вашем случае, но это только начало :)vi dump.sql
а затем в с помощью этого::%s/uf8mb4/utf8/g
.utf8_0900_ai_ci
наutf8_unicode_ci
я использую это в Linux:
затем восстановите your_file.sql
источник
sed -i '' ....
работает.sed -i 's/utf8_0900_ai_ci/utf8_general_ci/g' your_file.sql
Wordpress 4.2 представил поддержку кодировки символов «utf8mb4» из соображений безопасности , но только MySQL 5.5.3 и выше поддерживают ее. Способ, которым установщик (и средство обновления) управляют этим, состоит в том, что он проверяет вашу версию MySQL, и ваша база данных будет обновлена до utfmb4, только если она поддерживается .
В теории это звучит замечательно, но проблема (как вы обнаружили) заключается в том, что вы переносите базы данных с сервера MySQL, который поддерживает utf8mb4, на сервер, который этого не делает. Хотя обратный путь должен работать, это в основном односторонняя операция.
Как указал Евстер, вы можете добиться успеха, используя функцию экспорта в PHPMYAdmin. Используйте « Метод экспорта: Пользовательский » и для « Системы баз данных или более старого сервера MySQL, чтобы максимизировать совместимость вывода с: », выберите « MYSQL 40 ».
Для экспорта из командной строки используется mysqldump. Посмотрите на флаг:
Примечание. Если в базе данных есть 4-байтовые символы, они будут повреждены.
Наконец, для любого, кто использует популярный плагин WP Migrate DB PRO, пользователь в этой теме Wordpress.org сообщает, что миграция всегда выполняется правильно, но я не смог найти ничего официального.
В настоящее время нет возможности отказаться от обновления базы данных. Поэтому, если вы используете рабочий процесс, при котором вы переносите сайт с сервера или локального хоста с MySQL> 5.5.3 на тот, который использует более старую версию MySQL, вам может не повезти.
источник
TYPE=MyISAM
то, что было удалено в v5.1. Сделайте поиск и замените наENGINE=MyISAM
. Я не мог обойти это, используя параметрыmysqldump
вывода.В моем случае оказывается, что мой
новый сервер работал
MySQL 5.5
,старый сервер работал
MySQL 5.6
.Таким образом, я получил эту ошибку при попытке импортировать
.sql
файл, который я экспортировал со своего старого сервера.MySQL 5.5 не поддерживает
utf8mb4_unicode_520_ci
, ноMySQL 5.6 поддерживает.
Обновление до
MySQL 5.6
нового сервера решило проблему сортировки!Если вы хотите сохранить MySQL 5.5, вы можете:
- сделать копию экспортированного
.sql
файла- заменить экземпляры
utf8mb4unicode520_ci
иutf8mb4_unicode_520_ci
... на
utf8mb4_unicode_ci
- импортировать обновленный
.sql
файл.источник
mysql-server-5.6
пакет, который вы можете установить, и он автоматически удалит 5.5).В wp-config.php есть строка:
Если вы следуете инструкциям Маркувера / Евстера , не забудьте изменить эту строку на производственном сервере на
чтобы исправить сломанные 4-х байтовые символы
источник
define('DB_COLLATE', 'utf8_general_ci');
. Это помогло мне.После долгого исследования я нашел решение для выше:
Сначала вы меняете wp-config.php> База данных DB_CHARSET по умолчанию на "utf8"
Нажмите на вкладку «Экспорт» для базы данных
Нажмите кнопку «Пользовательский»
Перейдите к разделу «Опции, зависящие от формата» и измените раскрывающийся список «Система базы данных или более старый сервер MySQL, чтобы максимизировать совместимость вывода с:» с NONE на MYSQL40.
Прокрутите страницу вниз и нажмите «Перейти».
Тогда вы на.
источник
Похоже, ваш хост не предоставляет MySQL-версию, которая способна запускать таблицы с сортировкой utf8mb4.
Таблицы WordPress были изменены на utf8mb4 с версией 4.2 (выпущенной 23 апреля 2015 года) для поддержки Emojis, но вам нужен MySQL 5.5.3 для его использования.5.5.3. с марта 2010 года, поэтому он обычно должен быть широко доступным. Можете ли вы проверить, если ваш хостер предоставляет эту версию?
Если нет, и обновление невозможно, вам, возможно, придется искать другого хостера для запуска последних версий WordPress (и вы всегда должны делать это из соображений безопасности).
источник
Таким образом, я решил таким образом, от MySQL 5.6 до MySQL 5.5:
(Необязательно) Создайте
.sql.gz
файл:объяснение
Как объясняется в этом ответе , это просто эквивалент этой опции из phpMyAdmin: «Система базы данных или более старый сервер MySQL для максимальной совместимости вывода с:» dropdown select «MYSQL 40» .
Нам нужно это, чтобы решить эту проблему:
источник
$ sed -i'' 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql
. Если вы хотите сохранить копию, какdatabase_name.sql.bak
раньше, замените sed:$ sed -i'bak' 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql
sed
.--compatible=ansi
опциюЯ также испытал эту проблему. Решением, которое работало для меня, было открытие локальной базы данных с Sequel Pro и обновление Encoding and Collation до utf8 / utf8_bin для каждой таблицы перед импортом.
источник
Самый простой способ сделать это экспортировать свою базу данных
.sql
, откройте его в блокноте ++ и «Поиск и Заменить» ,utf8mb4_unicode_ci
чтобыutf8_unicode_ci
и также заменитьutf8mb4
наutf8
. Также не забудьте изменить параметры сортировки базы данных наutf8_unicode_ci
(Операции> Параметры сортировки).источник
откройте файл sql на Notepad ++, а
ctrl + H.
затем поставьте "utf8mb4
" при поиске и "utf8
" при замене. Проблема будет решена тогда.источник