Maven依赖关系;
Spring Boot版本:2.2.3.发布
LiquiBase核心版本:3.8.5
PostgreSQL版本:42.2.9
我有一个针对PostgreSQL 11数据库运行的Spring Boot应用程序,它出现了一个以前没有注意到的新行为。当我运行update命令时,databaseChangelog
表不会在活动模式中创建,即使正在创建databaseChangeloglock
表。这当然会导致运行失败,因为关系不存在。然而;我不控制这个表的创建,也从未控制过它。该表过去像锁表一样自动创建,但现在不是了。
private void setDatabase() {
if (hasConn) {
try {
database = (Database) Class.forName("liquibase.database.core.PostgresDatabase").newInstance();
database.setConnection(new JdbcConnection(getConnection()));
} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
log.error("Could not return Liquibase Database Object");
log.error(e.getMessage());
}
} else {
log.warn("Connection Object not yet set!");
}
}
private void melt() {
this.liquibase = new Liquibase(getDatabaseChangeLog(), new ClassLoaderResourceAccessor(), getDatabase());
}
private void drinkUpdate() throws LiquibaseException {
this.liquibase.update((String) null);
}
我的问题是,是否有人以前见过这种行为,是否与处理时使用的JAR版本有关?为什么更新运行时会生成DatabaseChangeloglock
表,而不是DatabaseChangelog
表?还有;在我的公共模式中生成的DatabaseChangelog
表似乎对我生成的每个数据库都很好...只是不在我的自定义模式对象中,它保存了我的大部分数据库对象。
我查看了调试输出,发现我的liquiBase.liquiBase
对象和相应的liquiBase.database.database.database
对象是完整和准确的,并且指定了适当命名的databaseChangelog
和databaseChangellog
表,将当前模式设置为我的值,但是更改日志表拒绝在锁表生成的同时生成。不幸的是,当我手动创建databaseChangelog
表时,数据库更改日志中指定的其余对象将按预期创建。
我相信您没有使用SpringBoot和Liquibase的集成方式。您应该不需要直接调用liquibase。事实上,那可能是不创建databasechangelog表的原因。如果将应用程序配置为:
下面是关于用LiquiBase设置Springboot的良好入门:https://docs.liquiBase.com/tools-integrations/Springboot/using-springboot-with-maven.html
希望能有所帮助。
谁知道如何从头开始迁移? 我像往常一样使用命令运行迁移 但不是运行迁移-我收到 谁知道会有什么问题?我需要手动添加数据交换日志和数据交换日志吗?这对我来说很奇怪,因为当我与其他框架分开使用liquibase时,它会为我生成这个表。
我决定在 Postgresql 的 Java 项目中使用 liquibase,所以我使用 maven goal 创建了初始变更集。现在它正在毫无问题地工作。 我正在寻找的是,在我对数据库进行了更改(比如从RDBMS客户端)之后,是否有任何命令可以分析更改日志和数据库状态,以根据我的更改生成更改集并将其附加到更改集xml文件中?
在生产中,数据库用液基changelog.yaml更新,数据库更新成功。 我们对数据库模式进行了一些更改(作为几个增强功能的一部分),例如创建新表、更改表列和创建约束等。 有没有办法使用最新的数据库架构更改自动更新 changelog.yaml?(需要附加到现有的 YAML 文件中,而不是从 SCRACH 重新创建。 因此对生产过渡数据的影响很小)
所以我的问题是--我如何重构文件结构,而不破坏我的liquibase设置和清空我的数据库?
在我们的项目中使用gradle-liquibase插件,解决了所有的依赖关系。 我有以下由Gradle liquibase插件建议的liquibase任务: 有关如何解决与类路径相关的问题的帮助吗?
我正在迁移一个由liquibase管理的现有数据库。 我已经有了更新日志。该应用程序是一个Spring启动应用程序,我用更新了pom,并设置了Spring液化基属性。 我对一个空数据库进行了测试,运行正常,liquibase在应用程序启动时执行changelog并维护< code>DATABASECHANGELOG表。 现在我面临的问题是数据库已经存在于所有其他环境中,我只想在完成 liquiba