Получение сообщения SQLEXCEPTION в процедурах MySQL 5.5.x

Как я могу получить текст ошибки в хранимой процедуре MySQL 5.5, когда происходит SQLEXCEPTION?

Мне нужно что-то в этом роде, чтобы увидеть, что пошло не так:

DECLARE EXIT HANDLER FOR SQLEXCEPTION    
BEGIN
    GET DIAGNOSTICS CONDITION 1
    SELECT "Table @p5 (Msg State @p2): @p1"
END;

Аналогично получению сообщения SQLEXCEPTION в процедурах MySQL, но там версия была 5.6.4, поэтому ПОЛУЧИТЕ ДИАГНОСТИКУ был доступен.


person jp2code    schedule 30.07.2014    source источник


Ответы (1)


Насколько я знаю, нет возможности эмулировать или заменить функциональность GET DIAGNOSTICS в более ранних версиях MySQL (ниже 5.6.4).

На bugs.mysql.com и на форумах MySQL есть много записей, в которых запрашивается эта функция. (Например, этот: http://bugs.mysql.com/bug.php?id=11660)

Я не знаю, можете вы или нет обновить свой экземпляр MySQL, но, насколько я знаю, это ваш единственный шанс.

Я нашел (возможно, и вы их тоже) некоторые вопросы, связанные с этим, но все они либо говорят о версии 5.6.4, либо нет ответов:

ИЗМЕНИТЬ

Если можете, обработайте ошибки MySQL в клиентском приложении.

Вы можете перечислить ошибки и предупреждения с операторами SHOW ERRORS и SHOW WARNINGS за пределами HANDLER, но вы не можете вставить результат этих операторов в таблицу. Внутри обработчика эти операторы дадут пустой набор результатов.

Для определенных состояний вы можете объявлять отдельные обработчики. Таким образом, вы можете знать состояние, но не знать никаких других подробностей.

Ознакомьтесь с этой статьей: http://www.mysqltutorial.org/mysql-error-handling-in-stored-procedures/

person Pred    schedule 12.08.2014
comment
Есть ли способ получить/сообщить информацию об исключении, которое было поймано? - person jp2code; 13.08.2014
comment
Я не знаю ни одного. Если вы напишите свой обработчик для определенного состояния, вы будете знать это состояние. Но состояний слишком много, чтобы писать обработчик для каждого из них. - person Pred; 13.08.2014
comment
Проверьте эту статью: mysqltutorial.org/mysql-error-handling-in -хранимые-процедуры - person Pred; 13.08.2014