You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Quarkus DevServices的PostgreSQL测试容器中运行初始化脚本?

在Quarkus DevServices的PostgreSQL测试容器中执行初始化脚本

要解决Liquibase迁移前需先创建数据库模式的问题,你需要调整Quarkus的DevServices配置,而非手动指定Testcontainers的JDBC URL参数,具体步骤如下:

1. 移除无效的手动配置

删掉你之前添加的这两行配置——DevServices会自动接管数据源创建,手动指定URL和驱动会干扰它的自动逻辑:

quarkus.datasource.jdbc.url=jdbc:tc:postgresql:13:///quarkus?TC_INITSCRIPT=testcontainer/schema-init.sql
quarkus.datasource.jdbc.driver=org.testcontainers.jdbc.ContainerDatabaseDriver

2. 添加DevServices专属初始化脚本配置

在application.properties(或application-dev.properties,仅针对dev模式生效)中添加以下配置:

# 指定DevServices启动PostgreSQL容器时执行的初始化脚本
quarkus.datasource.devservices.init-script=testcontainer/schema-init.sql

3. 确认脚本路径正确性

确保schema-init.sql文件放在正确的资源目录下:

  • 若为dev模式通用,放在src/main/resources/testcontainer/下
  • 若仅用于测试,放在src/test/resources/testcontainer/下

Quarkus会自动识别该路径,在启动PostgreSQL测试容器时优先执行脚本,之后再触发Liquibase的数据库迁移,避免因缺少模式导致迁移失败。

额外说明

DevServices的init-script配置是Quarkus专为Testcontainers集成设计的,它会确保脚本在Liquibase等数据库迁移工具执行前运行,完全匹配你的需求。

内容的提问来源于stack exchange,提问作者Herr Derb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 11:55:23