Знание последней ошибки mysql

#mysql #error-handling

#mysql #обработка ошибок

Вопрос:

Я запускаю PHP-скрипт, который выполняет большую часть работы с mysql

В какой-то момент mysql выходит из строя без вывода каких-либо ошибок

Затем я хотел бы перейти к mysql из консоли и спросить его, какова была последняя ошибка.

Как я могу это сделать?

(Я знаю о mysql_error() в php, но я ищу команду mysql, которую я могу запустить напрямую, независимо от php-скрипта)

Комментарии:

1. Я настоятельно рекомендую выполнить var_dump фактического окончательного запроса и запустить его в консоли mysql для целей отладки, а не пытаться выполнять отладку из php.

Ответ №1:

Вы можете запустить

SHOW ERRORS;

И аналогичная полезная ошибка:

SHOW WARNINGS;

Редактировать

По-видимому, это покажет только ошибки (или предупреждения) из ваших собственных сеансов. Так что, я думаю, это не подойдет для вашей цели (использование консоли для поиска ошибок, вызванных php).

В любом случае, вы можете прочитать руководство для получения дополнительной информации (в нем ничего не говорится о межсессионном протоколировании ошибок): http://dev.mysql.com/doc/refman/5.0/en/show-warnings.html

Ответ №2:

Я понимаю, что уже слишком поздно, но вдруг кто-нибудь найдет этот вопрос так же, как я… Для лучшей отладки вы можете сохранить запрос MySQL в текстовый файл на сервере.

Например, перед запросом:

$mysql->query("Select x from y where y.x = ".$_GET['yx']);

Напишите следующие строки:

error_log("Select x from y where y.x = ".$_GET['yx']);

И после этого вы сможете увидеть все запросы к базе данных из разных сеансов в текстовом файле.

Для лучшего восприятия:

 if (!$mysql->query("Select x from y where y.x = ".$_GET['yx']))
   error_log("Select x from y where y.x = ".$_GET['yx']);
else 
{
   you code here...
}