Краткий справочник по ошибкам 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 =====
__Описание__: //сервер прекратил принимать соединения. Подробнее опять на сайте разработчика//
*
*
*
*
*
__Что делать__:
* Ждем некоторое время, возможно хостер просто перезапускает сервер. Если ошибка повторяется длительное время, то следуем указаниям пункта 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.