Ошибка импорта базы данных

Во время переноса заглушек с хостинга на хостинг меня постоянно задалбывала одна ошибка импорта базы данных. А именно: на старом сервере сайт был в кодировке utf8mb4_unicode_520_ci и после сохранения дампа сайта в такой кодировке, естественно он не грузился в новую базу данных нового сервера.

Поскольку я никогда особо не увлекался редактированием серверов, мое лицо при ошибке в переносе было примерно таким:

Ошибка импорта базы данных

Хрен знает, как это лечится. Спросил у поисковиков. Везде разрозненные советы. Вроде проблема одна, а все говорят разное.

Как я с этим боролся.

Открываем в «Блокноте» дамп базы и средствами блокнота заменяем все «utf8mb4_unicode_520_ci» на «utf8mb4_unicode_ci» (Правка > Заменить…>). Полдела сделано, но это еще не все. Открываем дамп базы в WordPad и сносим следующие строки в начале дампа:

SET SQL_MODE = «NO_AUTO_VALUE_ON_ZERO»;
SET time_zone = «+00:00»;

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */;

Также сносим строки !40101 в самом конце дампа. Закрываем, сохраняем, грузим на новый сервер. Все работает.

После долбания с этой ошибкой импорта БД сделал такие выводы:

  • Вывод 1: на возникновение кодировки utf8mb4_unicode_520_ci влияют разные установленные плагины, если сайт на Вордпресс. Если их посносить перед экспортом дампа, база данных становится удобочитаемой на другом сервере;
  • Вывод 2 (на личных наблюдениях): чаще всего проблемы почему-то с сайтами именно с кодировкой utf8mb4_unicode_520_ci. Яндекс хреново их индексирует, накладывает разные санкции а то и вообще не пускает в индекс.

И еще выскочил один баг — знаки вопросов вместо русских букв после переноса сайта. Как я понял, это бывает когда русские ALT у фоток переносимого сайта. Ну тут я уже был профи по замене слов в Блокноте.

Открываем дамп с кракозябрами, меняем «utf8mb4_unicode_520_ci» на «cp1251_general_ci» (да, сайт был еще в 520-й кодировке до кучи) и еще меняем «utf8mb4» на «cp1251». Также сносим в начале и в конце дампа строки, указанные выше в тексте.

Это еще не все. Надо покопаться в настройках сервера, куда импортируем дамп с русскими символами. Открываем созданную базу данных, переходим во вкладку «Операции» в верхнем меню. В выпадающем списке «Сравнение» выбираем пункт cp1251_general_ci. Теперь главное при загрузке файла .sql не забыть выбрать в соответствующем выпадающем списке кодировку cp1251. Все заработало.

p.s. Заглушка сайта с кодировкой utf8mb4_unicode_520_ci после переноса на нормальную utf8mb4_unicode_ci, сразу вошла в индекс Яндекса. До этого я безуспешно пытался добавить этот сайт в индекс 3 месяца.

Search