Liquibase 如何标记 - 命令行
Posted
技术标签:
【中文标题】Liquibase 如何标记 - 命令行【英文标题】:How does Liquibase Tag - commandline 【发布时间】:2015-04-28 03:04:39 【问题描述】:我能够使用 liquibase 命令行成功标记,但不知道它的标记和存储位置。命令执行成功,下面是tag命令的输入和响应。
这可能是一个非常微不足道的问题,但我找不到任何文档。我确实在它的工作区尝试过 - C:\liquibase-3.3.2-bin\sdk\workspace,在那里找不到任何东西。有人可以帮忙吗?
谢谢!
输入:
C:\liquibase-3.3.2-bin\liquibase.bat --driver=com.microsoft.sqlserver.jdbc.SQLServerDriver --classpath=C:\Microsoft_JDBC_Driver_SQL_Server\sqljdbc_4.1\enu\sqljdbc4.jar -- url="jdbc:sqlserver://DBServer:1433;databaseName=DBName" --username=DBUser --password=DBPassword --changeLogFile=D:\UDeployment\Liquibase\Stage\src\main\resources\db-changelog。 xml标签test_25022015
输出:
成功标记 DBUser@jdbc:sqlserver://DBServer:1433;authenticationScheme=nativeAuthentication;xopenStates=false;sendTimeAsDatetime=true;trustServerCertificate=false;sendStringParametersAsUnicode=true;selectMethod=direct;responseBuffering=adaptive;packetSize=8000;multiSubnetFailover=false;loginTimeout= 15;lockTimeout=-1;lastUpdateCount=true;encrypt=false;disableStatementPooling=true;databaseName=DBName;applicationName=Microsoft JDBC Driver for SQL Server;applicationIntent=readwrite; Liquibase 'tag' 成功
【问题讨论】:
【参考方案1】:Liquibase 在您的数据库中创建两个表databasechangelog
和databasechangeloglock
。数据库中执行的所有脚本都会将历史记录存储在databasechangelog
中。当您运行tag
进程时,此标记使用您在tag
列中发送的版本执行的最后一个脚本。
【讨论】:
感谢@Eddú Meléndez,我能够看到在此表中创建的标签。但是当我为同一张表重新运行标签时。假设第一个标签用于创建表格,第二个标签用于插入一些值。该标签已使用新值更新,但未创建新条目。 EXECTYPE 是“RERAN”而不是“EXECUTED”。我怎样才能同时拥有两个标签? 如果第一次迭代有 3 个脚本并运行 liquibase tag 任务,那么第三个脚本将被标记。如果您再添加 5 个脚本,然后再次运行 liquibase 标签任务,最后一个脚本(在本例中为 3 + 5 = 8)-脚本编号 8- 将被标记为新标签。 是否会再次为同一张表和dbchange日志创建标签?以下是我执行的步骤,但每次运行标记命令时标记都会被覆盖。 1) 创建一个表 2) 向表中插入 2 个值 3) 标记 4) 向同一个表中插入 2 个值 5) 尝试回滚 数据库更改日志 - 插入值以上是关于Liquibase 如何标记 - 命令行的主要内容,如果未能解决你的问题,请参考以下文章
如何在Docker命令行上的Docker注册表中找到具有特定标记的Docker镜像?