我想在 Quarkus 测试中使用 H2 测试资源:
@QuarkusTestResource(H2DatabaseTestResource.class)
Run Code Online (Sandbox Code Playgroud)
但是我需要数据库中有一些可用的表。尽管我已经放置了带有 DDL 的 resources/import.sql,但测试失败,因为它在执行 import.sql 之前尝试使用配置中的表:
quarkus.security.jdbc.principal-query.sql=SELECT u.password, u.role FROM test_user u WHERE u.username=?
Run Code Online (Sandbox Code Playgroud)
因此:
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]
Run Code Online (Sandbox Code Playgroud)
有什么办法可以在 Quarkus 读取配置文件之前执行 SQL 吗?
您需要将 INIT 参数包含到 JDBC 连接字符串中,其中包含对要执行的 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'
Run Code Online (Sandbox Code Playgroud)
请参阅使用 H2 数据库保护 Quarkus 的示例应用程序。
| 归档时间: |
|
| 查看次数: |
3117 次 |
| 最近记录: |