MySQL脚本迁移在SET MESSAGE_TEXT行出现dbup错误

aydmsdu9  于 2023-04-04  发布在  Mysql
关注(0)|答案(1)|浏览(100)

我试图使用dbup来自动运行我的.NET 7应用程序中的数据库脚本。到目前为止,创建表的脚本都很好(当然,在做了很多工作之后),但是存储过程有问题。

...
BEGIN
    IF (SELECT COUNT(*) FROM mytable WHERE REPLACE(TRIM(name), ' ', '') = trimmed_name) > 0 
    AND (SELECT REPLACE(TRIM(name), ' ', '') WHERE id=categoryId) != trimmed_name
    THEN
        SIGNAL SQLSTATE '45000' 
        SET MESSAGE_TEXT = 'Category with given name already exists';
    ELSE
        UPDATE mytable SET name=categoryName, description=description
        WHERE id = categoryId;
    END IF;
END

出现以下错误消息:SQL语法中有错误;检查与您的MySQL服务器版本对应的手册,以在第21行的''附近使用正确的语法

  • 第21行是SET MESSAGE_TEXT行 *

一般来说,我想知道是否有关键字我不能用dbup,因为我抛出错误相同的错误,如果我声明一个变量与“DECLARE”
我已经重构了,去掉了空格,仍然没有积极的一面

gorkyyrv

gorkyyrv1#

我认为使用SIGNAL设置错误消息文本的MySQL语法存在问题--在此上下文中不需要SET

SIGNAL SQLSTATE '45000' 
    'Category with given name already exists';
  • 关于不能与DbUp一起使用的关键字--我不知道在DbUp中使用SQL关键字有任何特定限制

PS.请确保已正确配置DbUp项目以使用正确的数据库提供程序和连接字符串,并安装了任何必需的依赖项或包

相关问题