【发布时间】:2016-06-21 18:22:13
【问题描述】:
在 Spring Boot 应用程序中,我尝试在运行集成测试之前初始化一些 MySQL 数据库表和存储过程,方法是按照documentation 中的建议将 schema.sql 文件放在我的资源目录中。
create table 语句有效,但 create procedure 语句引发异常。导致异常的示例 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 issue 解决了相同的主题,但以 Won't Fix 标签结束。
【问题讨论】:
-
我没有太多信息,但可以试试
^作为转义字符。
标签: java mysql spring-boot