我想在Quarkus测试中使用H2测试资源:
@QuarkusTestResource(H2DatabaseTestResource.class)
但是我需要数据库中有一些表。 尽管我已在其中放置了带有DDL的resources / import.sql,但测试失败,因为它在执行import.sql之前尝试使用配置中的表:
quarkus.security.jdbc.principal-query.sql=SELECT u.password, u.role FROM test_user u WHERE u.username=?
结果:
Caused by: org.h2.jdbc.JdbcSQLException: Table "TEST_USER" not found; SQL statement:
SELECT u.password, u.role FROM test_user u WHERE u.username=? [42102-197]
在Quarkus读取配置文件之前,有什么方法可以执行SQL?
答案 0 :(得分:1)
您需要在JDBC连接字符串中包含INIT参数,并在其中包含对要执行的SQL脚本的引用。示例:
quarkus.datasource.url=jdbc:h2:tcp://localhost/mem:elytron_jdbc_test;DB_CLOSE_DELAY=-1;DB_CLOSE_DELAY=-1;INIT=RUNSCRIPT FROM 'classpath:import.sql'
请参阅保护Quarkus with H2 Database的示例应用程序。