Database Liquibase不会生成两个数据库的一致数据差异

Database Liquibase不会生成两个数据库的一致数据差异,database,database-migration,liquibase,Database,Database Migration,Liquibase,我正在尝试使用diffChangeLog生成迁移。看起来Liquibase只在修改表模式时检测数据更改。换句话说,如果您有两个具有相同表的DBs,并且您将插入或更新该表中的行,请使用--diffTypes=“data”参数对diffChangeLog事件执行任何操作。 但如果toy创建新表并在此表中插入行,Liquibase将完美地生成插入 以下是我在研究过程中采取的步骤: 1) 运行两个数据库: >sudo docker run --rm --name pg-docker1 -e POS

我正在尝试使用diffChangeLog生成迁移。看起来Liquibase只在修改表模式时检测数据更改。换句话说,如果您有两个具有相同表的DBs,并且您将插入或更新该表中的行,请使用--diffTypes=“data”参数对diffChangeLog事件执行任何操作。 但如果toy创建新表并在此表中插入行,Liquibase将完美地生成插入

以下是我在研究过程中采取的步骤:

1) 运行两个数据库:

>sudo docker run --rm --name pg-docker1 -e POSTGRES_PASSWORD=123 -d -p 5432:5432 -v $HOME/docker/volumes/postgres1:/var/lib/postgresql/data  postgres

>sudo docker run --rm --name pg-docker2 -e POSTGRES_PASSWORD=123 -d -p 5431:5432 -v $HOME/docker/volumes/postgres2:/var/lib/postgresql/data  postgres
2) 在第一个数据库上运行SQL

create schema test_schema;
create table test_schema.table1
(
    id bigint not null
        constraint table1_pk
            primary key,
    description text
);

alter table test_schema.table1 owner to postgres;

insert into test_schema.table1 values(1, 'descr1');
3) 下载liquibase并将posgress驱动程序jar添加到lib中

4) 生成变更日志并同步数据库

./liquibase --url="jdbc:postgresql://localhost:5432/postgres?currentSchema=test_schema" \
--username=postgres --password=123 \
--changeLogFile="./data-diff-1.xml" \
--diffTypes="data,tables,columns,views,primaryKeys,uniqueConstraints,indexes,foreignKeys,sequences" \
--includeSchema=true \
 generateChangelog

./liquibase --url="jdbc:postgresql://localhost:5431/postgres?currentSchema=test_schema" \
--username=postgres --password=123 \
--changeLogFile="./data-diff-1.xml" \
update
5) 第一次DB修改:

update test_schema.table1 set description = 'descr1 modified' where id =1;

insert into test_schema.table1 values(2, 'descr2');

create table test_schema.table2
(
    id bigint not null
        constraint table2_pk
            primary key,
    field1 text
);

alter table test_schema.table2 owner to postgres;

insert into test_schema.table2 values(1, 'value1');
6) 我正在尝试使用更新和插入生成新的迁移

./liquibase --url="jdbc:postgresql://localhost:5431/postgres?currentSchema=test_schema" \
--username=postgres --password=123 \
--changeLogFile="./data-diff-2.postgresql.sql" \
--diffTypes="data,tables,columns,views,primaryKeys,uniqueConstraints,indexes,foreignKeys,sequences" \
--includeSchema=true \
--referenceUrl="jdbc:postgresql://localhost:5432/postgres?currentSchema=test_schema" \
--referenceUsername=postgres --referencePassword=123 \
diffChangeLog
7) 结果:

问题是:更新test_schema.table1和第二次插入test_schema.table1(值2,'descr2')在哪里

--changeset 1567884982174-1
CREATE TABLE test_schema.table2 (id BIGINT NOT NULL, field1 TEXT, CONSTRAINT table2_pk PRIMARY KEY (id));

--changeset 1567884982174-2
INSERT INTO test_schema.table2 (id, field1) VALUES (1, 'value1');