Большинство web-мастеров, владельцев сайтов и людей, так или иначе сталкивающихся с web-программированием, рано или поздно встают перед задачей переноса базы данных сайта с одного хостинга на другой. Кроме этого, зачастую, у людей, тесно связанных с web-технологиями, возникает необходимость развернуть сайт локально на компьютере, к примеру, под программным решением Denwer. И в той, и в другой ситуации пользователь может столкнуться с различными ошибками экспорта/импорта базы данных. Об устранении одной из таких ошибок и пойдёт речь дальше.
Содержание статьи:
Причины возникновения ошибки "#1273 - Unknown collation"
Итак, при импорте базы данных на хостинг или на Denwer процесс загрузки может быть прерван с ошибкой следующего содержания:
Ошибка SQL-запрос: CREATE TABLE `wp_commentmeta` ( `meta_id` BIGINT( 20 ) UNSIGNED NOT NULL , `comment_id` BIGINT( 20 ) UNSIGNED NOT NULL DEFAULT '0', `meta_key` VARCHAR( 255 ) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL , `meta_value` LONGTEXT COLLATE utf8mb4_unicode_520_ci ) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_520_ci; Ответ MySQL: Документация #1273 - Unknown collation: 'utf8mb4_unicode_520_ci'
Последней строкой может быть указана и другая кодировка, например, utf8mb4_unicode_ci и тому подобное.
Вот как эта ошибка выглядит в браузере:
Причина возникновения ошибки #1273 в том, что в новых версиях СУБД MySQL добавляются новые кодировки сопоставления, которых может не оказаться на хостинге и в последних версиях продукта Denwer.
Исходя из озвученной причины ниже приведём три различных варианта решения проблемы Unknown collation.
Обновление MySQL на Denwer
Оптимальный вариант решения ошибки #1273, по нашему мнению, это обновление версии системы sql до актуального релиза. Главный минус данного способа заключается в том, что для его реализации вам необходимо иметь доступ до СУБД на сервере.
То есть, этот вариант подходит в том случае, если вы работаете с программным продуктом Denwer, расположенным на вашем компьютере (не рассматриваем ситуацию, при которой вы используете VDS - виртуальный выделенный сервер).
Чтобы обновить систему MySQL в установленном пакете Denwer на компьютере, в первую очередь, необходимо скачать нужные файлы новой версии sql. Предлагаем вам сделать это одним из двух способов:
- Скачать один из прикреплённых к статье файлов с архивом, соответствующих разрядности вашей операционной системы: mysql-5.7.19-winx86 или mysql-5.7.17-winx64
- Скачать на официальном сайте полный архив MySQL Community Server под вашу версию операционной системы и извлечь оттуда файлы mysql.exe, mysqlcheck.exe, mysqld.exe и mysql_upgrade.exe, расположенные в каталоге bin
Далее останавливаем Денвер запуском ярлыка Stop Denwer, переходим на компьютере в директорию MySQL установленного пакета Denwer. По умолчанию задан следующий путь:
C:\WebServers\usr\local\mysql-5.5\bin
В этот каталог помещаем скачанные exe-файлы и соглашаемся на замену.
Запускаем Денвер ярлыком Start Denwer и повторно импортируем базу данных. Ошибка устранена.
Экспорт базы данных сайта в режиме совместимости со старым MySQL
Этот способ обхода ошибки Unknown collation: utf8mb4 может быть использован в том случае, если мы имеем возможность повторного экспорта базы данных. Данное условие вытекает из того, что основные действия в этом варианте производятся на этапе создания бэкапа, а не его загрузки на сервер.
Суть заключается в том, что перед выгрузкой базы данных нам необходимо активировать расширенные настройки в приложении создания бэкапа и включить режим совместимости выгружаемой базы.
Рассмотрим, как выгрузить базу сайта в режиме совместимости MySQL на примере web-приложения phpMyAdmin.
Заходим в phpMyAdmin, выбираем нашу базу в списке и переходим на вкладку Экспорт
На открывшейся странице в разделе Метод экспорта ставим флаг-галку у пункта Обычный - отображать все возможные настройки. Теперь прокручиваем страницу вниз до раздела Параметры формата и в пункте Максимальная совместимость с системой базы данных, или устаревшей версией MySQL: из выпадающего списка выбираем вариант MYSQL40.
Остальные параметры можно не менять, скроллим страницу до конца и нажимаем кнопку Вперёд.
Сформированный архив будет импортироваться на сервер с MySQL старой версии без ошибок.
Ручное изменение кодировки базы данных сайта
И последний пример борьбы с ошибкой импорта базы данных сайта, который мы рассмотрим в рамках текущей публикации - это изменение кодировки SQL базы в таблице.
Проделать это можно как с помощью специальных sql-команд, так и вручную. Рассмотрим второй вариант.
Для того, чтобы отредактировать кодировку в базе, нам необходимо разархивировать бэкап сайта, если он находится в сжатой папке zip или rar. После этого открываем получившийся файл с расширением *.sql в удобном текстовом редакторе, например, в Notepad++
В окне текстового редактора нам необходимо заменить значения utf8mb4_unicode_ci и utf8mb4_unicod_520i на utf8_general_ci. Кроме этого, если в таблицах базы встречается значение utf8mb4, то, как и в предыдущем способе, его также надо изменить на utf8.
После проделанной корректировки сохраняем изменённый файл и повторяем импорт базы данных на сервер.
Мы рассмотрели три способа борьбы с ошибкой #1273 - Unknown collation: 'utf8mb4_unicode_ci'.
Надеемся, что вам удалось побороть данную проблему одним из вариантов.
Помогло ручное изменение, спасибо!
Спасибо за статью! Помогло ручное изменение кодировки базы данных сайта
Благодарю за помощь в этом вопросе, теперь я не допущу такой ошибки.