Регистрация ошибок запросов в MySQL - PullRequest
1 голос
/ 07 апреля 2011

У нас есть приложение, которое использует несколько запросов 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 это поведение по умолчанию, ошибки запросов записываются в текстовый файл, где их можно легко идентифицировать.

1 Ответ

2 голосов
/ 07 апреля 2011

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

...