我正在SpringBoot
应用程序中使用flyway
。数据库MySQL
。飞行路线脚本中的注释以#
开头。
当我尝试编写H2
测试时,它无法加载应用程序上下文并显示错误。
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.internal.command.DbMigrate$FlywayMigrateException:
Migration V0_0_1__init.sql failed
-------------------------------------------------
SQL State : 42000
Error Code : 42000
Message : Syntax error in SQL statement "[*]# types
INSERT INTO `users`.`TYPES` (NAME) VALUES (""Bob"") "; SQL statement:
# Types
INSERT INTO `users`.`types` (name) VALUES ("Bob") [42000-199]
Location : db/migration/V0_0_1__init.sql (/myapp/target/classes/db/migration/V0_0_1__init.sql)
Line : 1
Statement : # Types
INSERT INTO `users`.`types` (name) VALUES ("Bob")
根据我的理解,H2
不会将以#
开头的行视为注释,但MySQL
确实如此。有没有办法让H2
将SQL
脚本中的#
视为注释?
我什至将模式设置为在我的application-test.properties
中MySQL
,并使用h2-test
配置文件进行测试。
spring.datasource.url=jdbc:h2:myapp;MODE=MySQL;INIT=CREATE SCHEMA IF NOT EXISTS myapp;
正如 Evgenij Ryazanov 所说,H2 仅支持以下形式的注释:
-- anything
// anything
/* anything */
有关详细信息,请查看 H2 文档。
然后,您应该坚持使用--
的标准SQL92注释,并相应地修改SQL初始化脚本。