带存储过程的Spring Boot MySQL数据库初始化错误

Spring Boot" title="Spring Boot">Spring Boot应用程序中,我尝试按照文档中的建议,通过将schema.sql文件放在我的资源目录中,来在运行集成测试之前初始化一些MySQL数据库表和存储过程。

创建表语句可以工作,但是创建过程语句会引发异常。导致异常的示例schema.sql文件语句如下所示:

DROP PROCEDURE IF EXISTS `database`.FOO;

CREATE PROCEDURE `database`.FOO()

BEGIN

SELECT * from `database`.employees;

END;

问题是;存储过程中的字符由Spring ScriptUtils类解析,该类在执行schema.sql文件之前先对其进行解析,然后导致MySQL在脚本上引发语法错误。

我已经看过ScriptUtils类,还没有找到一种方法来转义;字符。\\\MySQL

DELIMITER命令一样,使用和作为转义字符也不起作用。

有人能通过Spring Boot使用schema.sql文件创建MySQL存储过程吗?如果可以,他们可以举个例子吗?

有关一些其他信息,以下Spring

JIRA问题解决了相同的主题,但已用 “不会修复” 标签关闭。

回答:

答案很简单。Spring Boot具有DataSource分隔符属性,可以在application.properties文件中进行设置:

spring.datasource.separator=^;

然后,需要在schema.sql文件中;使用新的分隔符更新存储过程之外的所有语句。

DROP PROCEDURE IF EXISTS `database`.FOO;

CREATE PROCEDURE `database`.FOO()

BEGIN

SELECT * from `database`.employees;

END ^;

以上是 带存储过程的Spring Boot MySQL数据库初始化错误 的全部内容, 来源链接: utcz.com/qa/404945.html

回到顶部