如何获取数据库的 Flyway 版本号
How do I get the Flyway version number of a database
我想提取我的生产数据库的预部署 Flyway 版本号,以便我可以在我的持续部署管道 (Jenkins) 中使用它,以防我稍后进行回滚。
我怎样才能做到这一点?
一个选项是查询飞路历史记录 table,但我无法找到实现此目的的故障安全方法。
下面的一行代码可以满足您的需求:
flyway info | grep Success | tail -1 | cut -f3 "-d|" | xargs
我已经想出了一个答案,尽管感觉像是一个很大的 hack。我 运行 --dryRunOutput 在 migrate 中作为一种让 flyway 将版本号输出到屏幕的方法,因为信息出于某种原因没有这样做。
我将输出读入文件(因为 DOS 很难通过管道传输或传递到变量中),然后隔离以 "Current" 开头的输出行。然后我使用 : 作为我的定界符选择第二个标记。可能有更简单的方法,我希望我可以使用飞路信息而不是迁移,因为我的方法感觉很老套,但至少现在可以用。
flyway -dryRunOutput=test.sql migrate | FIND "Current" >currentversion.txt
for /f "delims=" %%x in (currentversion.txt) do set CURRENTVERSIONLINE=%%x
for /f "tokens=1,2 delims=:" %%a in ("%CURRENTVERSIONLINE%") do set CURRENTVERSION=%%b
echo Version : %CURRENTVERSION%
我想提取我的生产数据库的预部署 Flyway 版本号,以便我可以在我的持续部署管道 (Jenkins) 中使用它,以防我稍后进行回滚。
我怎样才能做到这一点?
一个选项是查询飞路历史记录 table,但我无法找到实现此目的的故障安全方法。
下面的一行代码可以满足您的需求:
flyway info | grep Success | tail -1 | cut -f3 "-d|" | xargs
我已经想出了一个答案,尽管感觉像是一个很大的 hack。我 运行 --dryRunOutput 在 migrate 中作为一种让 flyway 将版本号输出到屏幕的方法,因为信息出于某种原因没有这样做。
我将输出读入文件(因为 DOS 很难通过管道传输或传递到变量中),然后隔离以 "Current" 开头的输出行。然后我使用 : 作为我的定界符选择第二个标记。可能有更简单的方法,我希望我可以使用飞路信息而不是迁移,因为我的方法感觉很老套,但至少现在可以用。
flyway -dryRunOutput=test.sql migrate | FIND "Current" >currentversion.txt
for /f "delims=" %%x in (currentversion.txt) do set CURRENTVERSIONLINE=%%x
for /f "tokens=1,2 delims=:" %%a in ("%CURRENTVERSIONLINE%") do set CURRENTVERSION=%%b
echo Version : %CURRENTVERSION%