Задавайте вопросы, мы ответим
Вы не зашли.
Здраствуйте.
В один прекрасный момент перестали выполняться триггеры. Причем не после какой-то перезагрузки, а во время работы, работали, а потом раз и перестали. Куда копать подскажите?
Неактивен
Звучит как-то подозрительно. Насколько я знаю, MySQL не умеет отключать триггеры, как
индексы. Сами триггеры живы? В смысле — есть? Если есть — хватает ли у них прав менять
нижележащие таблицы? Попробуйте удалить-пересоздать триггеры?
Неактивен
Триггеры-то живы, причем перестали выполняться те, что "ДО", а те что "ПОСЛЕ" выполняются. в тех, что "ДО" просто вызывается процедура с вызовой спец.ошибки для выводя ошибок.
Удаление и создание не помогает. В триггере выполняется такая вещь:
IF new.DATA_BEG > new.DATA_END THEN
CALL P_MyErr ('Дата закрытия введена некорректно');
END If
Процедура выглядит так.
CREATE PROCEDURE P_MyERR(IN Verr Varchar (500))
SQL SECURITY INVOKER
BEGIN
declare xX TINYINT;
SET Verr = CONCAT_WS('', '[MyERR]', Verr, '[MyERR]');
SET xX = Verr;
END
Это типа один из способов вывода ошибки триггера.
Кстати это произошло, когда откомпилировал с троссировкой PROCEDURE P_MyERR.
АЛЛЕЛУЮ убиение P_MyERR и создание заново помогло.
Отсюда вытекает второй вопрос: если в триггере большой текст ошибки, то он обрезается, можно с этим что-то сделать?, т.е. например вместо 'Дата закрытия введена некорректно' писать что-то больше скорее всего 255 символов, то обрезает.
Неактивен
Ваша процедура у меня не вызывает ошибку, а вызывает warning.
Пересоздайте процедуру, установив SET @@sql_mode = 'traditional';
Неактивен