gpt4 book ai didi

java - 使用 liquibase 以 yaml 格式插入行

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:51:37 26 4
gpt4 key购买 nike

我正在尝试定义一个 changeSet 以使用 liquibase 在表中插入两行。为此,我编写了以下变更集:

- changeSet:
id: 1.0/7
author: stivlo
changes:
-insert:
tableName: my_table
columns:
- column:
name: id
value: "1"
- column:
name: name
value: "One"
-insert:
tableName: my_table
columns:
- column:
name: id
value: "2"
- column:
name: name
value: "Two"

当我启动我的 Spring Boot 应用程序时,会执行变更集,但不会插入行。

在 DATABASECHANGELOG 表中,我发现原始说明迁移已执行,但描述为“空”,表示 liquibase 看不到迁移中的任何更改。

如何修复我的 yaml 以便能够插入这两行?


附言我已经设法通过嵌入 SQL 语句而不是使用 liquibase 插入来解决我的问题。

- changeSet:
id: 1.0/7
author: stivlo
changes:
- sql:
sql: insert into my_table (id, name) values (1, "One")
- sql:
sql: insert into my_table (id, name) values (2, "Two")

这行得通,但我仍然想知道如何正确定义 liquibase 插入。谢谢。

最佳答案

我一直在为同样的问题而苦苦挣扎,我想分享一些想法。
首先,关于您的特定问题 - 我认为您的 .yml 有点格式错误,尽管它可能只是 stackoverflow 格式。它应该看起来像这样:

- changeSet:
id: 1.0/7
author: stivlo
comment: "Some comments go here"
changes:
- insert:
tableName: my_table
columns:
- column:
name: id
value: "1"
- column:
name: name
value: "One"
- insert:
tableName: my_table
columns:
- column:
name: id
value: "2"
- column:
name: name
value: "Two"

请注意,整个变更集内容从 - changeSet block 的开头开始缩进
此外,所有 - 标记后都应跟有空格,否则在某些情况下您要么看不到任何内容,要么会出错
顺便说一句,我希望你没有忘记文件顶部的 databaseChangeLog block ?

关于解决 liquibase 问题的一些事情:

(归功于 this post )

首先,作为Mattias B提到,有一个真正有用的“updateSQL”选项。我用了CLI ,

  java -jar liquibase.jar --driver=org.h2.Driver --classpath=h2-1.3.170.jar --changeLogFile=yourchangelogpath/changelog.yaml --url=jdbc:h2:D:/Variaciok/db/variation --username=sa --password= updateSQL

您可以将几乎所有选项移动到文件中,例如

driver: org.h2.Driver
classpath: h2-1.3.170.jar
changeLogFile: yourchangelogpath/changelog.yaml
url: jdbc:h2:D:/db/variation
username: sa
password:

所以你的命令看起来像

java -jar liquibase.jar --defaultsFile=our_database.properties updateSQL

或者,如果您将文件命名为 liquibase.properties,您甚至可以跳过 --defaultsFile,这样它就是

java -jar liquibase.jar updateSQL

其次,如果您在运行程序或 CLI 中都没有看到任何错误,则几乎可以肯定问题是格式错误的 .yml

希望对您有所帮助!

关于java - 使用 liquibase 以 yaml 格式插入行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30006621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com