问题标签 [liquibase-hibernate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
liquibase - Liquibase - 生成更改日志
我希望 Liquibase 从此数据库“测试”中生成更改日志。可能吗?
我已经有一个现有的数据库,里面有它的表和数据。
现在,我希望 Liquibase 从这个数据库“测试”中生成一个变更日志。可能吗?
这是我的命令,但它不起作用。
我不使用任何密码。
该错误与 --changeLogFile=C:\db.changelog.xml 有关
我想,Liquibase 将引用我的数据库“测试”,并在文件夹 C 中生成名为“db.changelog.xml”的更改日志。
我错了哪一部分?我错过了什么吗?
或者,Liquibase 不打算从现有数据库生成更改日志?
或者,Liquibase 的目的是仅从变更日志生成数据库?反之亦然?
liquibase - Liquibase 不适用于更改 Spring Boot 配置文件
我将 Liquibase 与 SQL Server 2014 一起用于我的 Spring Boot 项目。我试图在启动时填充几个表并在那里更新基本信息。
一切正常,但是当我更改 Spring Boot 配置文件时,liquibase 失败,抱怨表存在。我尝试完全删除数据库,并希望 Liquibase 为我创建它。它仍然抱怨该表存在。我不明白为什么。如果我对一个 Spring Boot 配置文件做同样的事情,它可以无缝运行,但问题是当我更改 Spring Boot 配置文件时,你能帮忙吗?
jdbc - 如何将 liquibase cmd 与 db2 ssl 连接一起使用?
我正在尝试使用运行 liquibase update 命令
但我收到以下错误。谁能帮我解决这个问题?如何指定证书的位置?
java - 为什么 liquibase 不从 JPA 实体生成更改日志?
我想在 oracle 和实体中的当前数据库之间生成差异。但是差异没有正确生成,我认为清算没有看到我的实体。
我用这些设置创建了 liquibase 属性文件:
应用程序-dev.yml
并执行这个命令
但 1-changeLog.oracle.sql 中的结果是
所以在我看来,hibernate 看不到我的实体。当我将 referenceUrl 设置为没有实体的包时,结果是相同的。
我试过了
也一样,但归还我
并且该类与实体在同一个包中。
为什么hibernate/liquibase看不到我的实体的问题在哪里?谢谢你。
mysql - 强制 liquibase 使用 current_timestamp 而不是 now()
将 liquibase-core:3.6.3 与 MySQL 一起使用。
我第一次必须对列使用时间戳(3)而不是默认时间戳。由于我的时间戳列不可为空,如果未设置 DEFAULT 值,则添加 current_timestamp(直接在 MySQL 中或使用 liquibase)。
不是我面临 liquibase 生成的 SQL 不使用 CURRENT_TIMESTAMP 但 NOW() 作为要调用的默认函数的问题。这使得时间戳(3)不可能。
有没有办法强制 liquibase 在输出中使用 CURRENT_TIMESTAMP 而不是 NOW()?
输出: CREATE TABLE db_name.table_name(id INT unsigned NOT NULL, updated timestamp DEFAULT NOW() NOT NULL, CONSTRAINT PK_RULE_STATE PRIMARY KEY (id));
这工作正常。但是,更改timestamp
为timestamp(3)
输出: CREATE TABLE db_name.table_name(id INT unsigned NOT NULL, updated timestamp(3) DEFAULT NOW() NOT NULL, CONSTRAINT PK_RULE_STATE PRIMARY KEY (id));
其中 NOW() 不是有效值。
使用相同的输出defaultValueDate
如果我使用defaultValue: current_timestamp()
liquibase 足够聪明,可以将它检测为一个函数,它不使用文字字符串,但是,这仍然是 timestamp(3) 的一个重要值。最后,使用
产生输出:
CREATE TABLE db_name.table_name(id INT unsigned NOT NULL, updated timestamp(3) DEFAULT DEFAULT 'current_timestamp(3)' NOT NULL, CONSTRAINT PK_RULE_STATE PRIMARY KEY (id));
我最后的机会是根本没有设置默认值。这很好用,除了事实上,正如这个人很久以前所说的那样,MySQL 添加了ON UPDATE CURRENT_TIMESTAMP(3)
并且我无法避免它。
那么,有没有办法强制使用 current_timestamp(3) 或作为备份计划,以防止 MySQL 生成该ON UPDATE
部分?
spring - liquibase diff hibernate 和 jpa 模型与空数据库抛出无法构建类文件
我有一个多微服务项目,一个微服务名为 Foo,在 Foo 服务 pom 下,我添加了一个带有 hibernate 的 liquibase 插件,如下所示:
liquibase.yaml 文件如下所示:
执行liquibase generateChangeLog
工作正常,但liquibase diff
抛出此错误:
我有一种预感,它是一个包问题,但它的包名称是正确的,所以这里有什么问题?谁能帮帮我?
gradle - 如何将动态模式名称传递给 Liquibase 变更集并使用 liquibase gradle 插件在循环中运行它们
我们是 liquibase 的新手,并尝试像这样动态创建模式
但是当我们尝试执行时,我们得到了这个异常
如果社区可以为我们指明正确的方向,那将是非常有帮助的
postgresql - 如何将数据库模式从数据库 A 复制到数据库 B
我使用 liquibase 变更集创建了一个 Postgresql 数据库 A。现在,我正在创建一个应用程序,该应用程序允许创建一个新的数据库 B 并实时从数据库 A 复制架构,包括 liquibase 变更集,因为该数据库以后仍可以更新。请注意,在数据库 A 中复制模式时,可能已经更新,从而使基本变更集过时。
我的主要问题是:
- 如何使用 liquibase 将 PostgreSQL 模式 x 从数据库 a(在运行时动态生成)复制到 b?数据库 b 可能在另一台服务器上。
- 如果 liquibase 无法实现,还有哪些其他工具或方法可以实现这一点?
--
让我添加更多上下文:
- 我们使用 liquibase 变更集初始化一个新数据库的模式。
- 我们可以在运行时向数据库添加一个新表和字段。或者在应用程序运行期间。例如,我们将新表 people 添加到数据库 a 的模式中,该表最初不在变更集中。这也是使用 liquibase 类完成的。因此变更集被添加到 databasechangelog 表中。
- 现在,我们创建一个新的数据库 b。
- 我们想将数据库 a 的模式导入到 b 中,使用 people 表。
我希望这很清楚。
谢谢。
liquibase - Diff 未检测到索引存在
当我生成第一个差异时。差异文件看起来正确。它有我们需要创建的表。我运行应用程序,它创建表(Oracle),一切都很好。出于验证目的,我再次运行 diff 命令,期望它返回没有任何变化。不幸的是,它返回了对主键列的更改。如果我运行新的一组更改并进行另一个差异。它仍然返回相同的更改日志。它将无限地执行此操作。
我认为我可能使用了错误的依赖项,但我很迷茫。
聚甲醛
表创建更改集
始终创建的差异
液基性质
referenceUrl=hibernate:spring:com.example?dialect=org.hibernate.dialect.Oracle12cDialect&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy