【问题标题】:Flywaydb integrationFlywaydb 集成
【发布时间】:2014-05-23 19:14:00
【问题描述】:

我正在尝试将 Flyway 迁移集成到我的项目中(portlet - maven 构建),但我无法弄清楚如何执行所有必要的步骤 - 请你看看我到目前为止所做的事情并建议我是什么请问失踪了吗?我阅读了文档和一些示例,但没有完整的教程如何从头开始设置:

这是我所做的:

1) 在pon.xml中添加依赖

<dependency>
    <groupId>com.googlecode.flyway</groupId>
    <artifactId>flyway-core</artifactId>
    <version>2.3</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.21</version>
</dependency>

2) 在 src/main/resources/db/migration 中添加 sql 脚本 V1_Create_table_messages.sql

CREATE TABLE messages (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    msgid VARCHAR(64) UNIQUE,
    sender VARCHAR(255),
    receiver VARCHAR(255),
);

3) 用这个创建迁移类:

 public void migrate() {
        try {       
            Flyway flyway = new Flyway();

            flyway.setDataSource("jdbc:mysql://localhost:3306/myDb", "user", "password");

            flyway.setInitOnMigrate(true);
            flyway.migrate();
        } catch (Exception e) {
            System.out.println("Error while migrate database");
        }
    }

当我调用这个方法时,我得到了这个:(已编辑!)

com.googlecode.flyway.core.api.FlywayException: Unable to obtain Jdbc connection from DataSource
Caused by: java.sql.SQLException: Invalid authorization specification message from server: "Access denied for user 'nobody'@'localhost' (using password: NO)"

setDataSource 中的所有信息都设置正确。我知道这可能有些愚蠢,但我觉得我错过了在这里设置 Flyway 的一些重要步骤......

感谢您的任何提示!

编辑2: 在 pom.xml 中添加 MySQL 连接器依赖项

已解决:

问题是缺少 mysql 依赖项和 url 中的多余斜线...

【问题讨论】:

    标签: java maven flyway


    【解决方案1】:

    检查您的migrate() 方法。您设置了两次数据源。

    flyway.setDataSource("jdbc:mysql://localhost:3306/myDb", "user", "password");
    

    flyway.setDataSource(dataSource);
    

    我猜第二个setDataSource() 会覆盖正确的第一个数据源。

    编辑

    使用 MySQL Java 连接器而不是 H2 的正确 POM 定义是:

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.30</version>
    </dependency>
    

    【讨论】:

    • 对了,我忘了把这行删掉了。。不过,还是有问题。。。我会编辑我的问题
    • 我检查了我使用 Flyway 的方式,它和你的几乎完全一样。您确定数据源是可访问的吗? Access denied for user 'nobody'@'localhost' (using password: NO)
    • 当我在 protlet 中本地使用 JDBC 时,我使用相同的配置来处理我的数据库,到目前为止我没有任何问题...
    • 您是按照 POM 中的依赖项建议连接到 MySQL 还是 H2?您的 JDBC URL 可能需要为 jdbc:h2:myDb?或者您的 POM 可能需要包含 mysql-connector-java?
    • 我正在连接到本地主机上的 MySQL 数据库 - 也许 POM 中的依赖关系不正确...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2019-07-29
    • 2020-08-31
    • 2015-01-05
    相关资源
    最近更新 更多