我正在尝试使用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项目,以使用正确的数据库提供程序和连接字符串,并安装了任何所需的依赖项或包