Краткий справочник по ошибкам mySQL

 Краткий справочник по ошибкам mySQL

Любая ошибка при обращении к базе сопровождается подробным логом.
Во-первых, будет выдан запрос, вызвавший ошибку. Пример:
<code sql>SELECT p.*,
m.id,m.name,m.mgroup,m.email,m.joined,m.avatar,m.avatar_size,m.posts,m.aim_name,m.icq_number,
m.signature, m.website,m.yahoo,m.integ_msg,m.title,m.hide_email,m.msnname, m.warn_level, m.warn_lastwarn,
g.g_id, g.g_title, g.g_icon, g.g_dohtml, m.scripts, m.downloads
FROM ibf_posts p
LEFT JOIN ibf_members m ON (p.author_id=m.id)
LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup)
WHERE p.topic_id=1 and p.queued != 1
ORDER BY p.pid LIMIT 0, 15</code>

Для администратора этот запрос не столь важен, как, допустим, для разработчика модификаций. Так что подробно останавливаться на этом не будем.

Далее следует важная для нас часть, это описание ошибки. Например:

   mySQL error: Can’t open file: ‘word.MYD’. (errno: 145)

Отсюда мы узнаем, что у нас ошибка 145 с описанием «Can’t open file: ‘word.MYD’». Теперь, когда ошибка известна, обратимся к нашему справочнику ошибок mySQL.

===== » Error Code 2 (No such file or directory): =====

__Описание__: //был удален, очевидно, администратором, файл данных mySQL, сам файл указывается в описании ошибки.//

__Что делать__: Свяжитесь с администратором хостинга (службой поддержки) и сообщите об этой ошибке, они должны будут восстановить его. Или же попробуйте восстановить базу Вашего форума из бэкапа.

===== » Error Code 9 (Bad file descriptor): =====

__Описание__: //данная ошибка, ‘Bad file descriptor or error 9′, означает, что когда Вы пытаетесь открыть таблицу БД, возникает проблема нехватки свободных файловых дескрипторов для mySQL.//

__Что делать__: Если Вы имеете доступ к конфигурированию mySQL, т.е. у Вас на сервере есть /etc/my.cnf файл, то внесите изменения в параметр //open_files_limit// в разделе //safe_mysqld//.

Например:
<code ini>
  [safe_mysqld]
  open_files_limit=8192</code>

и перезапустите mySQL.

Если же такой возможности нет, то свяжитесь с Вашим хостером и сообщите об этой ошибке.

 

===== » Error Code 28 (No space left on device): =====

__Описание__: //28 ошибка одна из самых опасных и означает она, что закончилось место для хранения данных mySQL или же что в директории /tmp Вашего сервера не хватает свободного места.//

__Что делать__:
  * Закрыть Ваш форум, дабы не было записи в базу, при добавлении тем/сообщений и т.д.
  * Связаться с Ваши хостером (службой поддержки хостинга) и сообщить об этой ошибке.
  * Если же у Вас собственный сервер, то Вам необходимо увеличить место, отведенное для хранения данных mySQL, например, перенести на новый раздел, и/или изменить расположение /tmp директории в my.cnf

 
===== » Error Code 144 (Table is crashed and last repair failed): =====

__Описание__: //таблица, к которой происходило обращение, разрушилась, и последняя попытка ее восстановить оказалась безуспешной.//

__Что делать__:
  * Обратиться к хостеру и сообщить об ошибке.
  * Если же у Вас собственный сервер, Вам необходимо остановить mySQL сервер и запустить команду для восcтановления. Когда mySQL остановлен, выполните в shell/telnet/ssh команду:

  myisamchk -r -u имя_пользователя -pпароль имя_базы

где:
  * //имя_пользователя// – Ваше имя пользователя базы данных имя_базы;
  * //пароль// – пароль базы имя_базы. Обратите внимание, что пароль нужно указывать сразу после -p без каких-либо разделяющих символов;
  * //имя_базы// – база, которую требуется восстановить.

 

===== » Error Code 145 (Table was marked as crashed and should be repaired): =====

__Описание__: //таблица, к которой происходило обращение, разрушилась и необходимо ее починить.//

__Что делать__: Читаем [[sources:db:repiar|Исправление таблиц базы]]
===== » Too many connections =====

__Описание__: //большое количество соединений с базой, подробнее читаем//
[[http://www.mysql.com/doc/T/o/Too_many_connections.html]]

__Что делать__:
  * Обращаемся к хостеру и сообщаем об ошибке.
  * Если мы сами себе хостинг, то можем увеличить количество максимальных соединений. Изменяем параметр max_connections в файле /etc/my.cnf сервера.
===== » mySQL server has gone away =====

__Описание__: //сервер прекратил принимать соединения. Подробнее опять на сайте разработчика//
  * http://www.mysql.com/doc/G/o/Gone_away.html
  * http://www.mysql.com/doc/C/o/Common_errors.html
  * http://www.mysql.com/doc/S/e/Server_parameters.html
  * http://www.mysql.com/doc/O/p/Option_files.html
  * http://www.mysql.com/doc/S/H/SHOW_VARIABLES.html

__Что делать__:
  * Ждем некоторое время, возможно хостер просто перезапускает сервер. Если ошибка повторяется длительное время, то следуем указаниям пункта 2.
  * Стучимся к хостеру, недовольно сообщаем об ошибке.
  * Счастливым обладателям dedicated серверов:
- По умолчанию, сервер закрывает соединение через 8 часов бездействия. Вы можете изменить время простоя параметром wait_timeout в /etc/my.cnf.

- Другая причина получения ошибки ‘mySQL server has gone away’ это посылка Вами ”close” для Вашего mySQL соединения и затем попытка выполнения запроса, уже на закрытом соединении. Убедиться в том, что mySQL сервер функционирует, можно проверив его mysqladmin для проверки аптайма.

Для этого введите в shell/telnet/ssh:

  mysqladmin -u root -p version

- Еще одной из причин появлений этой ошибки может быть отправка Вами неверного или слишком большого запроса. Если mysqld получает слишком большой пакет или же неверный пакет, он в целях безопасности закрывает соединение с пользователем. Если Вам необходимо использование больших запросов, Вы можете увеличить этот лимит, запустив mysqld с ключем -O max_allowed_packet=# (по-умолчанию 1M) или опцией via max_allowed_packet в Вашем /etc/my.cnf файле.
Прочие ошибки mySQL, это в основном ошибки при составлении запросов к базе. В этом случае к хостеру обращаться не стоит, а попытаться решить проблему самому или же обратиться в раздел помощи на нашем форуме.

No related posts.

No Comments

Start the ball rolling by posting a comment on this article!

Leave a Reply




XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>