Я столкнулся с этим и вытащил свои волосы, пока не натолкнулся на это в официальном mysql docs
перед MySQL 5.6.3, если инструкция, которая генерирует предупреждение или ошибка приводит к вызову обработчика условий, обработчик может не очистить диагностическую область. Это может привести к тому, что обработчик не был вызван. Следующее обсуждение демонстрирует проблему и предоставляет обходное решение.
blockquote>Нажмите ссылку и прокрутите страницу вниз, чтобы узнать подробности, но исправить было включение успешного выбора INSIDE CONTINUE HANDLER:
DECLARE CONTINUE HANDLER FOR NOT FOUND BEGIN SELECT 1 INTO @handler_invoked FROM (SELECT 1) AS t; END;