Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何构建基于flyway java的迁移_Java_Flyway - Fatal编程技术网

如何构建基于flyway java的迁移

如何构建基于flyway java的迁移,java,flyway,Java,Flyway,我正在使用flyway命令行工具来处理我的db迁移。 到目前为止,所有迁移都是sql 配置文件(仅用于选项): 那很好用 但现在我需要添加一个基于java的迁移。我真的很困惑 我找不到任何如何做的例子。如何编译,将java迁移放在何处 我尝试过官方文档中的简单迁移类: package db.migration; import org.flywaydb.core.api.migration.jdbc.JdbcMigration; import java.sql.Connection; impor

我正在使用flyway命令行工具来处理我的db迁移。 到目前为止,所有迁移都是sql

配置文件(仅用于选项):

那很好用

但现在我需要添加一个基于java的迁移。我真的很困惑 我找不到任何如何做的例子。如何编译,将java迁移放在何处

我尝试过官方文档中的简单迁移类:

package db.migration;

import org.flywaydb.core.api.migration.jdbc.JdbcMigration;
import java.sql.Connection;
import java.sql.PreparedStatement;

/**
 * Example of a Java-based migration.
 */
public class V50_121_1__update_notes implements JdbcMigration {
    public void migrate(Connection connection) throws Exception {
        PreparedStatement statement =
            connection.prepareStatement("INSERT INTO test_user (name) VALUES ('Obelix')");

        try {
            statement.execute();
        } finally {
            statement.close();
        }
    }
}
但下一步该怎么办呢? 尝试编译:

javac -cp "./flyway-core-3.2.1.jar" V50_121_1__update_notes.java
jar cf V50_121_1__update_dataNode_notes.jar V50_121_1__update_dataNode_notes.class
然后把罐子放在不同的地方,没有效果

flyway信息-看不到迁移

因此,如何构建最简单的基于java的迁移。我不想使用Maven或类似的东西。只需简单的jar文件(???),它由flyway命令行工具获取


谢谢。

确保您的
.class
文件位于
.jar
文件中的
db/migration
目录中,并且确保您的
.jar
文件位于您的Flyway安装的
/jars
目录中

flyway.位置也应设置为:

db.migration,filesystem:/home/........./sql/migrations

.java
文件指定为
.java
como

类路径
包_示例。迁移

flyway.url=jdbc:postgresql://db.host
flyway.user=user
flyway.password=password

flyway.table=flyway_migrations

flyway.locations=filesystem:/home/...../sql/migrations,classpath:pack_example.migrations

flyway.sqlMigrationPrefix=update
flyway.validateOnMigrate=false
flyway.outOfOrder=true
有关文档,请参阅链接

谢谢。将db.migration添加到位置,这就是我想要的missed@Vadym科瓦连科我也面临着类似的问题,你能帮我吗。我已经将db/migration添加到flyway.locations中,jar文件放在jar文件夹中,但仍然面临相同的错误“无法在location:classpath:db/migration中扫描SQL迁移”,如果你还需要什么,请告诉我details@AdarshHDDevjar文件中的sql和/或类文件是否位于classpath-db/migration中?@VadymKovalenko是jar文件中的类文件位于db/migration中。我使用的是你问题中提到的同一个java类文件。我在类路径db/migration中没有任何sql,jar文件只包含类路径中的.class文件。这里是我关于stackover flow的问题的链接,它包含了我试图做的一步一步的细节。谢谢你的帮助。@Axel Fontaine你能解释一下flyway迁移过程是如何工作的吗?它监视文件系统中的.class文件,当新文件出现时,它会执行类文件中的JDBC命令,或者。。。。
flyway.url=jdbc:postgresql://db.host
flyway.user=user
flyway.password=password

flyway.table=flyway_migrations

flyway.locations=filesystem:/home/...../sql/migrations,classpath:pack_example.migrations

flyway.sqlMigrationPrefix=update
flyway.validateOnMigrate=false
flyway.outOfOrder=true