我尝试过在DB迁移中使用Mongock,这是一个非常好的工具。当主应用程序启动时,它会激活。最近我发现那里有蒙哥克CLI,它更适合我的目标。不幸的是,我没能成功。我以我以前的项目为模板,mvn clean package it,jar文件是在target文件夹中成功创建的。我遵循文档中的说明,但得到了一个错误。
也许我启动的不正确,或者我漏掉了一些代码。这就是我在控制台中所做的工作:cd D:\Programs\mongock-cli-5.0.26 ( mongock cli的路径)和./mongock migrate all -aj D:\Java Projects\mongock\target\cinema.jar ( intellij项目的路径,其中包含jar)
它生成这个文件:
#!/bin/sh
#Generated cli script
java -jar mongock-cli-5.0.26.jar \
--cli-spring-jar lib/mongock-cli-springboot-5.0.26.jar \
--cli-core-jar lib/mongock-cli-core-5.0.26.jar \
--mongock-core-jar lib/mongock-runner-core-5.1.0.jar \
"$@" \
\据我所知,我应该把它复制到控制台。我删除了反斜杠(如果它们保持不变就不起作用了),这就是我得到的字符串:java -jar mongock-cli-5.0.26.jar --cli-spring-jar lib/mongock-cli-springboot-5.0.26.jar --cli-core-jar lib/mongock-cli-core-5.0.26.jar --mongock-core-jar lib/mongock-runner-core-5.1.0.jar和我在这个字符串的末尾添加了migrate all。我在控制台中运行它,得到一个错误:
启动带有默认启动程序的Mongock CLI运行程序"io.mongock.runner.core.builder.RunnerBuilder.buildRunner(io.mongock.runner.core.executor.operation.Operation)“:无法调用io.mongock.cli.core.commands.migrate.MigrateCommand.all(MigrateCommand.java:38),因为"this.builder”在io.mongock.cli.core.commands.migrate.MigrateCommand.all(MigrateCommand.java:38)为null
你有什么办法解决这个问题吗?我应该包括@Bean RunnerBuilder吗?它不是在文档中指定的,所以我想我的错误在别的地方。
我还尝试用生成的代码运行bash文件(我使用的是bash script.sh ):,但是什么也没有发生。光标只移动到下一行,DB中没有应用任何更改。
发布于 2022-06-28 11:03:35
这似乎是因为您没有传递参数-aj来提供您的uber。
命令应该如下所示:
java -jar mongock-cli-5.0.26.jar --cli-spring-jar lib/mongock-cli-springboot-5.0.26.jar --cli-core-jar lib/mongock-cli-core-5.0.26.jar --mongock-core-jar lib/mongock-runner-core-5.1.0.jar migrate all -aj D:\YOUR_JAR_PATH.jar那应该管用。
无论如何,Mongock团队正在提供一个bat脚本,该脚本将与当前用于Linux的.sh脚本相同。它预计将在一天的最后发布。若否,则在未来数天内:)
https://stackoverflow.com/questions/72775428
复制相似问题