MySQL 5.1.39 SQL синтаксическая ошибка - PullRequest
0 голосов
/ 28 июня 2011

Я сделал обновление для MySQL Server до 5.1.39, и теперь, когда я запускаю сценарии SQL (которые работали ранее), он выдает ошибку. Я много раз проверял синтаксис и не мог найти несовместимые части кода. Пожалуйста, предложите любое решение для этой проблемы.

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

Mysql :: Error: у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'CREATE FUNCTION clean_dymmy_table (dummy_name VARCHAR (255)) RETURNS V' в строке 3:

Код SQL:

 /*DELIMITER //*/
 DROP FUNCTION IF EXISTS clean_dymmy_table;
 CREATE FUNCTION clean_dymmy_table (dummy_name VARCHAR(255)) RETURNS VARCHAR(255)
 DETERMINISTIC
 BEGIN
    DECLARE temp_val VARCHAR(255);
    SET temp_val = dummy_name;

    -- Test
    SET temp_val = REPLACE(temp_val, 'Tmp ', '');
    SET temp_val = REPLACE(temp_val, ' TmP', '');
    SET temp_val = REPLACE(temp_val, 'TMP ', '');
    SET temp_val = REPLACE(temp_val, ' TMP', '');
    SET temp_val = REPLACE(temp_val, ' tmp', '');

    RETURN dummy_name;
 END/*//*/

Ответы [ 2 ]

1 голос
/ 28 июня 2011

Не знаю, почему вы удалили часть DELIMITER, но когда я добавляю ее обратно, она работает нормально:

DELIMITER // -- you have to change what MySQL expects between commands
DROP FUNCTION IF EXISTS clean_dymmy_table // -- tell it a new command's coming
CREATE FUNCTION clean_dymmy_table (dummy_name VARCHAR(255)) 
                                   RETURNS VARCHAR(255)
DETERMINISTIC
BEGIN
    -- now this can be parsed as part of the current command.
    DECLARE temp_val VARCHAR(255); 
    SET temp_val = dummy_name;

    -- Test
    RETURN dummy_name;
END
// -- Now you're done with that command.
-- go back to semi-colons, because otherwise life is too zany for me.
DELIMITER ; 

(Это было в 5.1.54 ... но я не думаю, чтодолжно иметь значение)

0 голосов
/ 28 июня 2011

Подсказка: в строке 5.1.x, похоже, есть ошибка MySQL, относящаяся к DELIMITER, которая может вас здесь кусать:

  • # 46429 использовать команду DELIMITER в MySql.Data.MySqlClient.MySqlScript

Хотя это сильно зависит от того, как вы его называете, учитывая ответ 1011 * cwallenpoole , ваш симптом действительно предполагает, что эта ошибка вполне может быть, учитывая вашу версию MySQL. Возможна ли для вас модернизация?

...