如何在 Flyways 命令行工具中指定 initSQL?
How to specify initSQL in Flyways command line tool?
Flyway 的 Java API 提供了指定 SQL 语句的功能,这些语句在与目标数据库建立连接后立即执行(通过 Flyway.setDatasource => javadoc).这种 SQL 的典型用例是会话初始化。
Flyway flyway = new Flyway();
// datasource with initilization SQL
flyway.setDataSource(url, user, password, initSQL);
flyway.setLocations("sql/migrations");
flyway.migrate();
我想知道Flyway的命令行工具中是否没有类似的功能。我已经浏览了 https://flywaydb.org/documentation/commandline/ 上可用的官方文档资源,但我没有找到实现此目的的方法。
如果您希望让 Flyway 从您的 java 应用程序中执行脚本,那么起点就像下面的示例代码一样简单
Flyway flyway = new Flyway();
// Set the data source
flyway.setDataSource(dataSource);
// Where to search for classes to be executed or SQL scripts to be found
flyway.setLocations("net.somewhere.flyway");
flyway.setTarget(MigrationVersion.LATEST);
flyway.migrate();
文档的起点在这里
https://flywaydb.org/documentation/migration/java
发帖人在对另一个答案的评论中表达了他们正在尝试做的事情。
可以在此处找到您需要开始的手册部分
https://flywaydb.org/documentation/commandline/
这详细说明了如何创建配置文件,该文件将为 Flyway 的命令行版本提供正确的数据库连接详细信息,以允许它 运行 迁移脚本。
不清楚为什么您需要能够在 Flyway 建立连接后使用 ALTER SESSION 等 DDL 语句,因为应该使用已定义的正确模式创建连接。连接后更改架构将导致 Flyway 问题,因为它定义了一个 table,它在其中跟踪每个架构的更改。因此,如果您希望更改多个模式,FAQ 中的标题 "Does Flyway support multiple schemas?"
中列出了一些策略
https://flywaydb.org/documentation/faq
暂不支持。请在 Flyway 问题跟踪器中提交功能请求。
我也在寻找类似于初始 sql 的命令行飞行路线。
就我而言,我需要做
ALTER SESSION SET NLS_LANGUAGE= 'ENGLISH';
因为我在波兰工作并开始收到波兰语的 ORA 错误,这不是我的母语:)
我决定在这里分享它,因为它可能会有用,因为它总是以本地语言显示错误消息。
之前的错误消息(波兰语)
迁移 V-1.0.0.27__add stg_trading_book_seq .sql 失败
SQL 状态:42000
错误代码:955
消息:ORA-00955: nazwa jest już używana przez istniejący obiekt
之后
迁移 V-1.0.0.27__add stg_trading_book_seq .sql 失败
SQL 状态:42000
错误代码:955
消息:ORA-00955:名称已被现有对象使用
那么对我有帮助的是什么
我将 JVM 参数 -Duser.language=en 放入根 flyway 文件夹 flyway.cmd(对于 linux 只是 flyway)
%JAVA_CMD% -cp "%INSTALLDIR%\lib\*;%INSTALLDIR%\drivers\*" -Duser.language=en org.flywaydb.commandline.Main %*
Flyway 的 Java API 提供了指定 SQL 语句的功能,这些语句在与目标数据库建立连接后立即执行(通过 Flyway.setDatasource => javadoc).这种 SQL 的典型用例是会话初始化。
Flyway flyway = new Flyway();
// datasource with initilization SQL
flyway.setDataSource(url, user, password, initSQL);
flyway.setLocations("sql/migrations");
flyway.migrate();
我想知道Flyway的命令行工具中是否没有类似的功能。我已经浏览了 https://flywaydb.org/documentation/commandline/ 上可用的官方文档资源,但我没有找到实现此目的的方法。
如果您希望让 Flyway 从您的 java 应用程序中执行脚本,那么起点就像下面的示例代码一样简单
Flyway flyway = new Flyway();
// Set the data source
flyway.setDataSource(dataSource);
// Where to search for classes to be executed or SQL scripts to be found
flyway.setLocations("net.somewhere.flyway");
flyway.setTarget(MigrationVersion.LATEST);
flyway.migrate();
文档的起点在这里
https://flywaydb.org/documentation/migration/java
发帖人在对另一个答案的评论中表达了他们正在尝试做的事情。
可以在此处找到您需要开始的手册部分
https://flywaydb.org/documentation/commandline/
这详细说明了如何创建配置文件,该文件将为 Flyway 的命令行版本提供正确的数据库连接详细信息,以允许它 运行 迁移脚本。
不清楚为什么您需要能够在 Flyway 建立连接后使用 ALTER SESSION 等 DDL 语句,因为应该使用已定义的正确模式创建连接。连接后更改架构将导致 Flyway 问题,因为它定义了一个 table,它在其中跟踪每个架构的更改。因此,如果您希望更改多个模式,FAQ 中的标题 "Does Flyway support multiple schemas?"
中列出了一些策略https://flywaydb.org/documentation/faq
暂不支持。请在 Flyway 问题跟踪器中提交功能请求。
我也在寻找类似于初始 sql 的命令行飞行路线。 就我而言,我需要做
ALTER SESSION SET NLS_LANGUAGE= 'ENGLISH';
因为我在波兰工作并开始收到波兰语的 ORA 错误,这不是我的母语:) 我决定在这里分享它,因为它可能会有用,因为它总是以本地语言显示错误消息。
之前的错误消息(波兰语)
迁移 V-1.0.0.27__add stg_trading_book_seq .sql 失败
SQL 状态:42000 错误代码:955 消息:ORA-00955: nazwa jest już używana przez istniejący obiekt
之后
迁移 V-1.0.0.27__add stg_trading_book_seq .sql 失败
SQL 状态:42000 错误代码:955 消息:ORA-00955:名称已被现有对象使用
那么对我有帮助的是什么 我将 JVM 参数 -Duser.language=en 放入根 flyway 文件夹 flyway.cmd(对于 linux 只是 flyway)
%JAVA_CMD% -cp "%INSTALLDIR%\lib\*;%INSTALLDIR%\drivers\*" -Duser.language=en org.flywaydb.commandline.Main %*