После обновления до MySQL 8 надежная хранимая процедура выдает ошибки после применения изменений - PullRequest
0 голосов
/ 12 февраля 2020

Хранимая процедура, разработанная несколько лет назад, go, которая использует много представлений для обновления вновь созданной таблицы, выдает ошибки после обновления до MYSQL 8. Я могу запустить окончательное представление, содержащееся в процедуре, которое вызывает все остальные и все работает нормально. Но если я запускаю процедуру, это дает ошибку деления на ноль при первом запросе на обновление. Я не могу найти ничего плохого в другом месте. Я могу повторить проблему, выбрав работающую подпрограмму, добавив пробел, например, для внесения изменений, и нажав «Принять». Тогда та же самая рутина дает ошибки. Ошибки: Код ошибки: 1264. Вне диапазона значения для столбца «....» в строке 1, который является десятичным (5,2), и если я увеличу до десятичного (6,2), я получу код ошибки: 1365. Деление на 0. Помогите!

1 Ответ

0 голосов
/ 12 февраля 2020

Вероятно, это связано с различными режимами SQL между настройками сервера. MySQL имеет SQL режимы ERROR_FOR_DIVISION_BY_ZERO и строгий режим, которые определяют, возникает ли ошибка при возникновении нуля или результат будет определен как NULL.

Ваши оригинальные процедуры были написаны (процедуры сохраняют свои режимы), когда настройки отличались от текущих. При изменении кода процедура получает текущий режим.

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