×
Техническая документация: Хостинг

Устранение неполадок доступа по mysql

...

Сайт не работает, нет подключения к базе данных

  • Скорее всего вы недавно сменили пароль MySQL и не прописали новый пароль в конфигурационном файле своего сайта.
  • Если вы не знаете, в каком файле прописан пароль MySQL, то зайдите на площадку по SSH с помощью программы Putty и выполните команду поиска
    grep -risl 'uXXXX.mysql' ./*
    вместо uXXXX напишите название своей площадки, например, u100500.mysql; когда файл будет найден, отредактируйте, прописав правильный пароль
  • Если вы не можете выполнить сами предлагаемые выше действия, то подайте заявку в техничекую поддержку, сообщите в заявке новый пароль и мы выполним починку.

Table is marked as crashed and should be repaired

Если вы видите такое сообщение, то зайдите в phpmyadmin, выделите нужную таблицу и в списке действий выберите "Восстановить таблицу". Либо зайдите по SSH на площадку и выполните команду

mysqlcheck -r --all-database -uuXXXX -p -huXXXX.mysql

Проблемы при импорте, экспорте резервной копии (mysqldump, mysql)

По умолчанию система считает, что данные в базе хранятся в кодировке UTF-8. Если ваши данные хранятся в другой кодировке, то после создания резервной копии (дампа) для последующего корректного восстановления данных необходимо открыть созданный файл текстовым редактором и исправить в нём строчку:

/*!40101 SET NAMES utf8 */;

Например, для кодировки Windows-1251 нужно указать:

/*!40101 SET NAMES cp1251 */;

Дополнительные опции утилиты mysqldump:

--add-drop-table — опция, которая добавляет команду DROP TABLE перед созданием таблиц. Перед восстановлением таблиц из дампа, таблицы с таким же именем в рабочей базе данных будут удалены и пересозданы из резервной копии. Рекомендуется использовать для предотвращения возможных ошибок после восстановления;

--add-locks — опция, которая добавляет команды LOCK TABLES перед выполнением и UNLOCK TABLE после выполнения каждого дампа таблицы. Применяется для ускорения доступа к MySQL;

--quote-names — опция, сообщающая утилите о необходимости ставить кавычки для названий таблиц и столбцов. Рекомендуется к использованию для MySQL версий, младше 4.1.1. В старших версиях она активирована по умолчанию.

Опции --quick и --opt рекомендуется использовать, если база данных MySQL слишком большая для того, чтобы целиком поместиться в памяти.

При этом утилита mysqldump выдает ошибку:

mysqldump: Out of memory (Needed XXXXX bytes)
mysqldump: Got error: 2008: MySQL client
run out of memory when retrieving data from server 

В итоге строчка для создания копии базы данных получается следующей:

mysqldump --opt -u имя_пользователя -p -h имя_сервера_БД --add-drop-table имя_базы > dump.sql

либо такой:

mysqldump --quick -u имя_пользователя -p -h имя_сервера_БД --add-drop-table имя_базы > dump.sql

Для совместимости дампа, сделанного на стороннем сервере мы рекомендуем создавать дамп базы данных с ключом:

--max_allowed_packet=2M

Если во время импорта вы получите ошибку вида

mysqldump: Error 2020:
Got packet bigger than 'max_allowed_packet'
bytes when dumping table `some_table_name ` at row: 2
значит в вашей базе данных присутствуют данные, которые невозможно разделить на отдельные части, каждая не больше двух мегабайт.

Как правило, такое случается, если базу данных MySQL используют для хранения содержимого различных файлов, например, картинок или музыки, не размещая их непосредственно в файловой системе. В таком случае, если размер какого-нибудь файла превышает определённое значение — база данных становится непригодной для использования на наших серверах и потребуется либо удалить такие данные из вашей базы, либо рассмотреть вариант использования сервера баз данных на VPS-сервере , где можно установить нужное ограничение max_allowed_packet в необходимое значение, либо не использовать его вообще.

Если на вашем сервере установлена версия MySQL 4.0.x, то для корректного переноса данных со сторонних серверов необходимо при экспорте базы данных использовать ключ:

--compatible=mysql40