MySQL脚本迁移与dup错误在SET MESSAGE_TEXT行



我正在尝试使用dup在我的。net 7应用程序中自动运行db脚本。到目前为止,用于创建表的脚本还不错(当然是在进行了大量的测试之后),但是存储过程存在问题。

...
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行

一般来说,我想知道是否有关键字我不能在dup中使用,因为它会抛出错误同样的错误如果我声明一个变量"DECLARE">

我已经重构了,去掉了空格,仍然没有阳性

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

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

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

相关内容

  • 没有找到相关文章

最新更新