liquibase“更改日志文件类路径名”

时间:2019-07-27 21:35:55

标签: liquibase

在液基changeSet documentation中指出:

  

每个changeSet标记由“ id”标记,“ author”标记和 changelog文件类路径名称

组合唯一标识

很多时候,我想避免通过其文件位置来标识一个changeSet,因此我在根元素中使用了logicalFilePath。
不过,我想更好地了解文件路径是如何设计的。 我的问题是:简单的“文件路径”和“文件类路径名”之间有什么区别? 我使用一个简单的changeSet(没有逻辑文件路径)进行了一些测试,该创建了一个简单的CUSTOMERS表。

从c:\ projects

运行
C:\projects> liquibase --changeLogFile=.\P1\databaseChangeLog.xml --username=U1 --password=U1 --url="jdbc:oracle:thin:@//localhost:1521/xe" update
Starting Liquibase at sab, 27 lug 2019 21:55:47 CEST (version 3.6.2 built at 2018-07-03 11:28:09)
Liquibase: Update has been successful.

从c:\ projects

检查状态
C:\projects> liquibase --changeLogFile=.\P1\databaseChangeLog.xml --username=U1 --password=U1 --url="jdbc:oracle:thin:@//localhost:1521/xe" status
Starting Liquibase at sab, 27 lug 2019 23:18:06 CEST (version 3.6.2 built at 2018-07-03 11:28:09)
U1@jdbc:oracle:thin:@//localhost:1521/xe is up to date

如您所见,它是最新的!

从c:\ projects \ P1

运行

在这里,我进入了C:\ projects \ P1,因此chanageLogFile参数只是文件名:“。\ databaseChangeLog.xml”,而之前是“。\ P1 \ databaseChangeLog.xml”。

C:\projects\P1> liquibase --changeLogFile=.\databaseChangeLog.xml --username=U1 --password=U1 --url="jdbc:oracle:thin:@//localhost:1521/xe" update
Starting Liquibase at sab, 27 lug 2019 21:55:32 CEST (version 3.6.2 built at 2018-07-03 11:28:09)
Unexpected error running Liquibase: ORA-00955: name is already used by an existing object
 [Failed SQL: CREATE TABLE P009T02.CUSTOMERS (ID NUMBER, NAME VARCHAR2(255), SURNAME VARCHAR2(255))]
 ...

changeLogFile尚未更改,但是因为changeSet由其位置标识,所以它们被识别为不同。 (实际上只有一个)。 由于它是一个不同的变更集,因此liquibase尝试执行它,但是由于该表已经存在,因此它失败了。

在databasechangelog表中的FILENAME字段中,我们有:

.\P1\databaseChangeLog.xml

这不过是我在第一次执行中指定为changeLogFile参数的内容。 因此,尽管有争议,但功能非常清楚。如文档中所述,它使用路径作为键。仍然不清楚的是,虽然它似乎使用的是作为路径传递的确切字符串,但是文档中讨论的这个“文件类路径”使我感到困惑,我想知道是否还有其他用途。

0 个答案:

没有答案
相关问题