#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...
}