liquibase 如何确定,应该应用哪些更改?

Art*_*hur 1 liquibase

我是 liquibase 的新手,我已阅读 liquibase 文档,但仍然没有找到 liquibase 如何确定数据库的当前版本以及应在update.

例如,如果考虑来自 liquibase 站点主页的 SQL 脚本:

sql 文件的第一次运行update是:

--liquibase formatted sql

--changeset nvoxland:1
create table person (
  id int not null primary key,
  firstname varchar(80),
  lastname varchar(80) not null,
  state varchar(2)
);
Run Code Online (Sandbox Code Playgroud)

第二次运行update,脚本是

--liquibase formatted sql

--changeset nvoxland:1
create table person (
  id int not null primary key,
  firstname varchar(80),
  lastname varchar(80) not null,
  state varchar(2)
);

--changeset nvoxland:2
alter table person MODIFY column firstname varchar(8)
Run Code Online (Sandbox Code Playgroud)

第三次运行是:

--liquibase formatted sql

--changeset nvoxland:1
create table person (
  id int not null primary key,
  firstname varchar(80),
  lastname varchar(80) not null,
  state varchar(2)
);

--changeset nvoxland:2
alter table person MODIFY column firstname varchar(8)

--changeset nvoxland:3
alter table person MODIFY column firstname varchar(10)
Run Code Online (Sandbox Code Playgroud)

第四次运行:

--liquibase formatted sql

--changeset nvoxland:1
create table person (
  id int not null primary key,
  firstname varchar(80),
  lastname varchar(80) not null,
  state varchar(2)
);

--changeset nvoxland:2
alter table person MODIFY column firstname varchar(8)

--changeset nvoxland:3
alter table person MODIFY column firstname varchar(10)

--changeset nvoxland:4
alter table person MODIFY column firstname varchar(8)
Run Code Online (Sandbox Code Playgroud)

第五次运行是:

--liquibase formatted sql

--changeset nvoxland:1
create table person (
  id int not null primary key,
  firstname varchar(80),
  lastname varchar(80) not null,
  state varchar(2)
);

--changeset nvoxland:2
alter table person MODIFY column firstname varchar(8)

--changeset nvoxland:3
alter table person MODIFY column firstname varchar(10)

--changeset nvoxland:4
alter table person MODIFY column firstname varchar(8)

--changeset nvoxland:5
alter table person MODIFY column firstname varchar(15)
Run Code Online (Sandbox Code Playgroud)

第 5 次运行时会发生什么update,liquibase 将如何确定第 4 次运行后数据库版本将为“4”并且需要将列修改为 15 个字符长度?

liquibase 可能会向数据库添加一些“版本”表,在其中插入所应用的变更集/补丁的最新版本?

谢谢你!

sli*_*lim 6

http://www.liquibase.org/documentation/index.html说:

变更集由“author”和“id”属性以及变更日志文件的位置唯一标识,并且是 Liquibase 跟踪执行的单元。当 Liquibase 运行时,它会查询 DATABASECHANGELOG 表中标记为已执行的变更集,然后执行变更日志文件中尚未执行的所有变更集。