【问题标题】:How liquibase determines, what changes should be applied?liquibase 如何确定,应该应用哪些更改?
【发布时间】:2017-09-06 22:47:51
【问题描述】:

我是 liquibase 的新手,我已经阅读了 liquibase 文档,但仍然没有找到,liquibase 如何确定数据库的当前版本以及应该对update 应用哪些更改。

例如,如果从 liquibase 站点主页考虑 SQL 脚本:

第一次运行update,sql文件为:

--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)
);

第二次运行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)

第三轮是:

--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)

第四次运行:

--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)

第 5 次运行是:

--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)

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

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

谢谢!

【问题讨论】:

    标签: liquibase


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!我看不到那个页面了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多