带存储过程的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