Ошибка переноса сохраненной функции на новый сервер MySQL - PullRequest
0 голосов
/ 29 октября 2019

Перенос базы данных с сервера MariaDB-10.2.12 на MySQL-5.7.28, и хранимая функция выдает синтаксическую ошибку.

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

Это функция (полученная из mysqldump с существующего сервера)

DELIMITER ;;
CREATE DEFINER=`root`@`localhost` FUNCTION `string2int`(`input` VARCHAR(32) CHARSET utf8) RETURNS bigint(10)
    NO SQL
    SQL SECURITY INVOKER
BEGIN
DECLARE ret BIGINT DEFAULT 0;
SET input=REPLACE(input, ' ', '');
IF input REGEXP '^-?[0-9]+$' THEN
  SET ret=input;
ELSEIF input REGEXP '^-?[0-9]+K' THEN
  SET ret=CAST(input AS INT)*1024;
ELSEIF input REGEXP '^-?[0-9]+M' THEN
  SET ret=CAST(input AS INT)*1024*1024;
ELSEIF input REGEXP '^-?[0-9]+G' THEN
  SET ret=CAST(input AS INT)*1024*1024*1024;
END IF;
RETURN ret;
END ;;

Сообщение об ошибке:

Error in query (1064): Syntax error near 'INT)*1024; ELSEIF input REGEXP '^-?[0-9]+M' THEN SET ret=CAST(input AS INT)*' at line 10```
...