Flyway 无法确定模式历史表的默认模式

问题描述 投票:0回答:1

我正在尝试将 FlyWay 集成到非 spring 应用程序中 我有下一节课,它在应用程序启动时执行:

@Singleton
@Startup
@TransactionManagement(value = TransactionManagementType.BEAN)
public class Config {
    private static final String MIGRATIONS_PATH = "migration";
    private final static Dotenv ENV = Dotenv.configure().load();
    @Resource
    private static MariaDbDataSource dataSource;

    static {
        dataSource = new MariaDbDataSource();
        try {
            dataSource.setUrl(ENV.get(FlyWayParameters.URL.getParameter()));
            dataSource.setDatabaseName(ENV.get(FlyWayParameters.SCHEMA.getParameter()));
            dataSource.setUser(ENV.get(FlyWayParameters.USER.getParameter()));
            dataSource.setPassword(ENV.get(FlyWayParameters.PASSWORD.getParameter()));
        } catch (SQLException e) {
            log.error("[ERROR] Database initialization failed. Possible problem with configuration");
        }
    }

    @PostConstruct
    private void onStartup() {
        Flyway flyway = configureFlyWay();
        flyway.migrate();
    }

    private Flyway configureFlyWay() {
        Flyway flyway = Flyway.configure()
                .dataSource(dataSource)
                .locations(MIGRATIONS_PATH)
                .load();
        return flyway;
    }
}

我从 .env 文件中获取数据库参数(示例):

FLYWAY_URL=jdbc:mysql://localhost
FLYWAY_USER=test
FLYWAY_PASSWORD=test
FLYWAY_SCHEMA=testschema

SO dataSource 没问题,创建了 flyaway,但是当

migrate()
开始时我得到异常:

org.flywaydb.core.api.FlywayException: Unable to determine schema for the schema history table. Set a default schema for the connection or specify one using the defaultSchema property! 

我尝试将

.defaultSchema()
添加到 flyway 配置对象,但这没有帮助。有什么问题吗?

java database-migration flyway
1个回答
0
投票

在 FLYWAY_URL 中指定连接的默认架构

在你的情况下使用

FLYWAY_URL=jdbc:mysql://localhost/test

© www.soinside.com 2019 - 2024. All rights reserved.