按照建议,我在我的
中创建了一个liquibase.docker.properties
文件
classpath: /liquibase/changelog
url: jdbc:postgresql://localhost:5432/mydb?currentSchema=public
changeLogFile: changelog.xml
username: myuser
password: mypass
要能够运行Docker,请运行--rm--net=“host”-v
。
当我运行[...]时GenerateChangelog
,我得到以下输出(使用选项--loglevel info
):
[2021-04-27 06:08:20] INFO [liquibase.integration] No Liquibase Pro license key supplied. Please set liquibaseProLicenseKey on command line or in liquibase.properties to use Liquibase Pro features.
Liquibase Community 4.3.3 by Datical
####################################################
## _ _ _ _ ##
## | | (_) (_) | ##
## | | _ __ _ _ _ _| |__ __ _ ___ ___ ##
## | | | |/ _` | | | | | '_ \ / _` / __|/ _ \ ##
## | |___| | (_| | |_| | | |_) | (_| \__ \ __/ ##
## \_____/_|\__, |\__,_|_|_.__/ \__,_|___/\___| ##
## | | ##
## |_| ##
## ##
## Get documentation at docs.liquibase.com ##
## Get certified courses at learn.liquibase.com ##
## Free schema change activity reports at ##
## https://hub.liquibase.com ##
## ##
####################################################
Starting Liquibase at 06:08:20 (version 4.3.3 #52 built at 2021-04-12 17:08+0000)
BEST PRACTICE: The changelog generated by diffChangeLog/generateChangeLog should be inspected for correctness and completeness before being deployed.
[2021-04-27 06:08:22] INFO [liquibase.diff] changeSets count: 1
[2021-04-27 06:08:22] INFO [liquibase.diff] changelog.xml does not exist, creating and adding 1 changesets.
Liquibase command 'generateChangeLog' was executed successfully.
看起来该命令运行“成功”,但在我挂载的本地目录中找不到文件CHANGELOG.xml
,即
。然而,挂载必须工作,因为它成功地连接到数据库,即容器能够访问和读取liquibase.docker.properties
。
首先,我认为我可能必须“告诉”Docker允许在我的磁盘上写入,但似乎应该支持这一点[从Docker Hub上的描述来看]:
/liquibase/changelog卷还可用于写入输出的命令,如generateChangeLog
附加信息
Docker Inspect
的输出:
"Mounts": [
{
"Type": "bind",
"Source": "<PATH TO CHANGELOG DIR>",
"Destination": "/liquibase/changelog",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
},
...
],
当您运行GenerateChangelog
时,文件的路径应该指定为/liquibase/changelog/changelog.xml
,即使对于Update
,也应该指定为changelog.xml
示例:
docker run --rm --net="host" -v <PATH TO CHANGELOG DIR>:/liquibase/changelog liquibase/liquibase --defaultsFile=/liquibase/changelog/liquibase.docker.properties --changeLogFile=/liquibase/changelog/changelog.xml generateChangeLog
对于GenerateChangelog
,changeLogFile参数是要输出的文件的特定路径,而相对于更新和其他命令使用的类路径
设置的路径。
详细信息
创建文件的操作和读取现有文件的操作是有区别的。
对于Liquibase,您几乎总是希望使用与类路径中的目录相关的文件路径,就像下面的示例一样。指定的changelogFile存储在跟踪系统中,因此如果您曾经运行相同的changelog,但以不同的方式引用(因为您移动了根目录或正在不同的机器上运行),那么Liquibase将把它视为一个新文件,并尝试重新运行已经运行的变更集。
我在spring Boot2应用程序中有以下错误: 由:liquiBase.exception.changeLogParseException引起:读取迁移文件时出错:无法将类路径资源[src/main/resources/changeLogs/changeLog-1.0.xml]解析为URL,因为它不存在于liquiBase.parser.core.xml.xmlChangeLogsaxPars
在我的应用程序中,我可能需要运行多个Changelog文件,但我无法执行这样的执行, 我尝试按以下方式提供多个Changelog, LiquiBase.SetChangeLog(“classpath:schema/update-schema-01.sql”); LiquiBase.SetChangeLog(“classpath:schema/update-schema-02.sql”); 请在这里
我在SpringBoot中使用liquiBase 3.8.0。我的changelog文件树如下所示: 我尝试使用上下文,但发现了奇怪的行为--如果我在changelog-master.xml或changelog-test.xml中使用上下文,就像这样(父级changelog文件): 之后,contexts列将填充“!prod AND test” 我希望contexts列始终是填充的(如果我在父ch
解决这种迁移的合适方法是什么?扔掉changelog历史记录,使用修改后的changelog从头重新构建架构,然后迁移数据?有更好的方法吗?
我正在将一个庞大的基于Spring Boot1.x的项目升级到Spring Boot2.2。旧版本使用的是LiquiBase3.5,当前的升级分支使用的是LiquiBase3.8。 主changelog文件具有以下结构: LiquiBase的属性读取系统在3.5和3.8之间有变化吗? 作为变通方法,我使用这里定义的方法:https://reflectoring.io/database-migrat
通过Scala spark-shell,我可以使用ElasticSearch-Hadoop-5.5.0连接器访问Elasticsearch db。 是否有一种方法可以增量地导出数据(例如,一次100k条记录),这样我就不会使系统内存过载?