У нас есть приложение, которое использует несколько запросов SQL и может время от времени генерировать странную ошибку.
Например, это может быть:
INSERT INTO TABLE (ID, FIELD) VALUES (1, "field value");
, что приведет к:
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
Поскольку ограничение уникального первичного ключа было нарушено.
Возможно ли в MySQL каким-либо образом регистрировать ошибку вместе с запросом, который ее вызвал? Я попытался включить журнал ошибок и general-log в / etc / mysql / my.cnf , но он так и не дал ожидаемого результата. Я мог бы включить ведение журнала каждого запроса без их ошибок (для нас это довольно бесполезно, нас интересуют только те запросы, которые приводят к ошибкам).
Ошибки могут быть обнаружены приложениями (в нашем случае, мы используем Perl DBI), однако, когда в хранимой процедуре есть несколько операторов, мы не знаем, какой из них, поскольку сообщение об ошибке не включает текст запроса или даже имя таблицы. Это делает поиск неисправностей довольно трудным.
Я уверен, что упускаю что-то очевидное. Например, в Oracle это поведение по умолчанию, ошибки запросов записываются в текстовый файл, где их можно легко идентифицировать.