我正在尝试在生产支持分支(即V3.1)上使用maven应用outOfOrder迁移。3.1分支有12个迁移3.1.0.13.1.0.12。前11个已经应用,在我的开发环境中,我已经应用了下一个版本3.3的两个迁移。信息如下所示:
+----------------+----------------------------+---------------------+---------+ | Version | Description | Installed on | State | +----------------+----------------------------+---------------------+---------+ | 1 | > | 2013-08-16 16:35:22 | Success | | 3.1.0.1 | CCI DDL | 2013-08-16 16:41:04 | Success | | 3.1.0.2 | Update 1 | 2013-08-19 12:17:43 | Success | | 3.1.0.3 | Add SVT ITEM HISTORY | 2013-08-21 16:24:28 | Success | | 3.1.0.4 | Drop Col Event Key From ED | 2013-08-27 14:15:36 | Success | | 3.1.0.5 | Add Job Begin Time COL | 2013-10-10 14:59:14 | Success | | 3.1.0.6 | Update SVT Column Lengths | 2013-10-23 10:25:33 | Success | | 3.1.0.7 | Add Seq Number to EDC ECRF | 2013-12-03 14:59:31 | Success | | 3.1.0.8 | Set EDC ECRF ITEM Seq Numb | 2013-12-03 15:27:08 | Success | | 3.1.0.9 | Add Table EDC USV FORM | 2013-12-03 15:37:47 | Success | | 3.1.0.10 | Add Table SVT USV FORM MAP | 2013-12-03 15:52:24 | Success | | 3.1.0.11 | Add Tables SUBJECT VISIT Q | 2014-04-29 17:09:13 | OutOrde | | 3.1.0.12 | Add Table BOGUS ERIC TEST | | Ignored | | 3.3.0.1 | Insert iMedidata CRS Info | 2014-04-24 10:50:38 | Future | | 3.3.0.2 | Insert Study OBJECT TYPE | 2014-04-24 11:14:37 | Future | +----------------+----------------------------+---------------------+---------+
我在 V3.1 分支中的 mvn 构建输出文件夹中运行以下命令: mvn 飞行方式:迁移 -Dflyway.outOfOrder=真 -P
我得到以下输出:
[错误]未能在项目上执行目标组织:飞行方式专家插件:3.0:迁移(默认-cli): 组织.发现已应用的迁移和可用迁移之间的差异:类路径上缺少检测到的应用迁移:3.3.0.1 -
它似乎想在同一个类路径target/db/migrations文件夹中找到已经应用于数据库的3.3迁移,但是当然这些文件存在于更高版本的分支中。要么是我遗漏了一些配置设置,要么是我不理解乱序的工作方式。我不想将这些文件从V3.3分支拉回V3.1分支。
有人可以帮忙解释吗?
我的pom从父pom继承了以下内容,并且大多数配置值都是从配置文件中传递过来的:
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>3.0</version>
<configuration>
<driver>${flyway.driver}</driver>
<url>${flyway.url}</url>
<user>${flyway.user}</user>
<password>${flyway.password}</password>
<outOfOrder>${flyway.outOfOrder}</outOfOrder>
</configuration>
<dependencies>
<dependency>
<groupId>com.oracle.ojdbc</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
</dependencies>
</plugin>
这就是我的解决方案。我用Java代码配置了flyway。是的,我设置了validateOnMigrate - false。
@Bean(name = "flyway")
@Lazy(false)
public Flyway buildConfiguredFlyway() {
Flyway flyway = configure();
if (!validate(flyway)) {
migrate(flyway);
}
return flyway;
}
private Flyway configure() {
Flyway flyway = new Flyway();
flyway.setDataSource(datasource);
flyway.setBaselineOnMigrate(true);//Create meta-data table if it did not exist.
flyway.setValidateOnMigrate(false);
return flyway;
}
private boolean validate(Flyway flyway) {
try {
flyway.validate();
return true;
} catch (FlywayException o) {
return false;
}
}
private void migrate(Flyway flyway) {
try {
int result = flyway.migrate();
LOGGER.info("Number of DB mirgations successfully applied: " + result);
} catch (FlywayException e) {
LOGGER.error(e.getMessage(), e);
((ConfigurableApplicationContext) applicationContext).stop();
}
}
将验证“
迁移”设置为“假”,您应该没问题。默认情况下,它将检查已解析的迁移和应用的迁移是否匹配。在您的特定情况下,这将不起作用,因此您必须禁用它。
我已经创建了一个通用的Spring批处理作业,用于处理数据并存储到CSV中。我需要从读取器传递到写入器的一些数据,这是我试图使用JobExecution来做的。然而令人惊讶的是,代码似乎首先调用getWriter()而不是getReader()函数。下面给出了我的配置。有人能解释为什么会发生这种情况,以及是否有其他方法将数据从读取器传递到写入器。 我想从读取器传递到写入器的数据是CSV的列名。由于
我正在使用spring Roo并希望访问Controller类中的一个bean,该类在ApplicationContext.xml中具有以下配置: 配置类本身是: 在我的Controller中,我认为一个简单的Autowired注释应该可以完成这项工作 在启动过程中,spring在setSkipWeeks方法中打印消息。不幸的是,每当我在控制器中调用config.getSkipWeeks()时,它
当我运行以下程序时,它只打印 然而,从Java 8的equalsIgnoreCase文档中我们发现: 如果以下至少一项为真,则两个字符c1和c2被视为相同的忽略情况: •对每个字符应用java.lang.character.ToUpperCase(char)方法会产生相同的结果 所以我的问题是为什么这个程序不打印 在这两种操作中,都使用了大写字符。
我试图使用来传输我根据前面的问题设置的自定义标头。 我在文件中读到... 我的属性包括:
我正在和selenium一起工作,刮一些数据。 有一个按钮在页面上,我正在点击说“Custom_Cols”。这个按钮为我打开了一个窗口,我可以在那里选择我的列。 我的问题是为什么新窗口上的元素不可见,即使我正在等待元素的可见。补充一下,我已经尝试增加延迟时间,但我还是会偶尔出现这个错误。 我的密码在这里