以 # 开头的行在 H2 中不被视为 MySQL 的注释



我正在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确实如此。有没有办法让H2SQL脚本中的#视为注释?

我什至将模式设置为在我的application-test.propertiesMySQL,并使用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初始化脚本。

最新更新