Liquibase generateChangeLog命令不会生成更改集

时间:2018-07-19 21:23:26

标签: liquibase

按照these指令,在我现有的postgresql数据库上执行generateChangeLog命令,结果文件不包含changset标记。也许我误会了一些东西,但是我认为到目前为止对数据库的修改(创建的表等)已经在这里总结了,这就是“使您看起来像一直在使用Liquibase一样” “选项。

如果这不是正确的假设,并且如果我直接对要描述为changeSet的数据库进行修改,那么该如何使用Liquibase命令行将这些更改集添加到文件中?

编辑:

以下是逐步执行generateChangeLog和更新的示例:

./liquibase --driver=org.postgresql.Driver --classpath=postgresql-42.2.4.jar --changeLogFile=changelog1.xml --url="jdbc:postgresql://localhost:5432/my_database" --username=postgres --password=postgres --logLevel=debug generateChangeLog

输出:

  

DEBUG 7/20/18 8:15 PM:liquibase:已连接到postgres @ jdbc:postgresql:// localhost:5432 / my_database

     

DEBUG 7/20/18 8:15 PM:liquibase:将自动提交从true设置为false

     

DEBUG 7/20/18 8:15 PM:liquibase:计算1532117738554的校验和为2d79fcfb744a18b475eac6c1d1bd804d

     

DEBUG,18年7月20日晚上8:15:liquibase:执行QUERY数据库命令:SELECT c.relname AS SEQUENCE_NAME from pg_class c在c.relnamespace = pg_namespace.oid上加入pg_namespace WHERE c.relkind ='S'和nspname ='public'AND c.oid not in(从pg_depend d中选择d.objid,其中d.refobjsubid> 0)

     

INFO 7/20/18 8:15 PM:liquibase:changelog1.xml不存在,正在创建

     

DEBUG,18年7月20日8:15:liquibase:MissingObjectChangeGenerator类型顺序:liquibase.structure.core.Catalog liquibase.structure.core.Schema liquibase.structure.core.Sequence liquibase.structure.core.StoredProcedure liquibase。 liquibase.structure.core.Column liquibase.structure.core.PrimaryKey liquibase.structure.core.UniqueConstraint liquibase.structure.core.Index liquibase.structure.core.ForeignKey liquibase.structure.core.View

     

DEBUG,18年7月20日晚上8:15:liquibase:UnexpectedObjectChangeGenerator类型顺序:liquibase.structure.core.Catalog liquibase.structure.core.ForeignKey liquibase.structure.core.Schema liquibase.structure.core.StoredProcedure liquibase。 liquibase.structure.core.View liquibase.structure.core.Table liquibase.structure.core.PrimaryKey liquibase.structure.core.Column liquibase.structure.core.Index liquibase.structure.core.Sequence

>      

DEBUG,18年7月20日晚上8:15:liquibase:ChangedObjectChangeGenerator类型顺序:liquibase.structure.core.Catalog liquibase.structure.core.ForeignKey liquibase.structure.core.Schema liquibase.structure.core.Sequence liquibase。结构体核心存储过程liquibase.structure.core.Table表liquibase.structures.core.Column liquibase.structures.core.PrimaryKey liquibase.structure.core.UniqueConstraint liquibase.structure.core.Index liquibase.structure.core.View   Liquibase'generateChangeLog'成功

此时,在我的本地Postgresql服务器中,my_database具有2个模式,一个名为my_schema(包含11个表,其中填充了我的应用程序正在使用的数据),另一个名为public。公众没有桌子。

正在运行的liquibase更新:

./liquibase --driver=org.postgresql.Driver --classpath=postgresql-42.2.4.jar --changeLogFile=changelog1.xml --url="jdbc:postgresql://localhost:5432/my_database" --username=postgres --password=postgres --logLevel=debug update

返回:

  

DEBUG 7/20/18 8:21 PM:liquibase:已连接到postgres @ jdbc:postgresql:// localhost:5432 / my_database

     

DEBUG 18/7/20下午8:21:liquibase:将自动提交从true设置为false

     

18年7月20日8月20日下午:liquibase:执行QUERY数据库命令:从public.databasechangeloglock中选择count(*)

     

DEBUG 18/7/20下午8:21:liquibase:创建数据库锁定表   DEBUG 7/20/18 8:21 PM:liquibase:执行EXECUTE数据库命令:CREATE TABLE public.databasechangeloglock(ID INT NOT NULL,LOCKED BOOLEAN NOT NULL,LOCKSTAMPTED TIMESTAMP WITH TIME ZONE,LOCKEDBY VARCHAR(255),CONSTRAINT PK_DATABASECHANGELOGLOCK PLOCK (ID))

     

DEBUG 18/7/20下午8:21:liquibase:创建了名称为public.databasechangeloglock的数据库锁定表

     

18年7月20日8月20日下午:liquibase:执行QUERY数据库命令:从public.databasechangeloglock中选择count(*)

     

DEBUG 18/7/20下午8:21:liquibase:初始化数据库锁定表

     

DEBUG 18/7/20下午8:21:liquibase:执行EXECUTE数据库命令:从public.databasechangeloglock删除

     

DEBUG 18/7/20 8:21:liquibase:执行EXECUTE数据库命令:INSERT INTO public.databasechangeloglock(ID,LOCKED)值(1,FALSE)

     

18年7月20日8月21日下午:liquibase:正在执行QUERY数据库命令:从public.databasechangeloglock WHERE ID = 1处选择锁定

     

DEBUG 18/7/20下午8:21:liquibase:锁定数据库

     

DEBUG 18/7/20下午:liquibase:执行UPDATE数据库命令:UPDATE public.databasechangeloglock SET LOCKED = TRUE,LOCKEDBY = '10 .0.2.15(10.0.2.15)',LOCKGRANTED ='2018-07- 20 20:21:26.650'WHERE ID = 1 AND LOCKED = FALSE   INFO 7/20/18 8:21 PM:liquibase:成功获取更改日志锁定

     

DEBUG 18/7/20下午8:21:liquibase:解析XML实体名称='null',publicId ='null',baseURI ='null',systemId ='http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd'

     

DEBUG 18/7/20下午8:21:liquibase:打开jar:文件:/home/vagrant/Documents/liquibase.jar!/liquibase/parser/core/xml/dbchangelog-3.5.xsd作为liquibase / parser /core/xml/dbchangelog-3.5.xsd

     

DEBUG 7/20/18 8:21 PM:liquibase:计算1532118089029的校验和为cfbe2a0b147c646104f738103a68b2fd

     

DEBUG 18/7/20下午8:21:liquibase:创建数据库更改日志表

     

INFO 18/7/20下午8:21:liquibase:创建名称为public.databasechangelog的数据库历史记录表

     

DEBUG 18/7/20下午:liquibase:执行EXECUTE数据库命令:CREATE TABLE public.databasechangelog(ID VARCHAR(255)NOT NULL,AUTHOR VARCHAR(255)NOT NULL,FILENAME VARCHAR(255)NOT NULL ,不带时区的DATEEXECUTED TIMESTAMP不是NULL,ORDEREXECUTED INT不是NULL,EXECTYPE VARCHAR(10)不是NULL,MD5SUM VARCHAR(35),DESCRIPTION VARCHAR(255),COMMENTS VARCHAR(255),TAG VARCHAR(255),LIQUIBASE VARCHAR(20) ),上下文VARCHAR(255),标签VARCHAR(255),DEPLOYMENT_ID VARCHAR(10))

     

DEBUG 18/7/20下午8:21:liquibase:执行QUERY数据库命令:从public.databasechangelog中选择count(*)

     

INFO 7/20/18 8:21 PM:liquibase:从public.databasechangelog中读取

     

18年7月20日晚上8:21:liquibase:执行QUERY数据库命令:SELECT * FROM public.databasechangelog ORDER BY DATEEXECUTED ASC,ORDEREXECUTED ASC

     

18年7月20日8月20日下午:liquibase:执行QUERY数据库命令:从public.databasechangeloglock中选择count(*)

     

DEBUG 18/7/20下午8:21:liquibase:释放数据库锁定

     

DEBUG 18年7月20日8:21:liquibase:执行UPDATE数据库命令:UPDATE   public.databasechangeloglock SET LOCKED = FALSE,LOCKEDBY = NULL,LOCKGRANTED = NULL,其中ID = 1

     

INFO 18年7月20日8:21:liquibase:成功释放更改日志锁定

     

Liquibase更新成功

现在,在“公共”模式下,有2个表,databasechangelog和databasechangeloglock。 databasechangelog为空,但是databasechangeloglock包含一行ID为1的行,且其“锁定的布尔值”列为“ FALSE”。

1 个答案:

答案 0 :(得分:1)

我意识到我没有指定正确的架构。在数据库示例中有2个,“ public”和“ my_schema”,而Liquibase显然默认为public模式。

使用以下命令成功生成更改集:

./liquibase --driver=org.postgresql.Driver --classpath=postgresql-42.2.4.jar --changeLogFile=changelog.xml --url="jdbc:postgresql://localhost:5432/my_database?currentSchema=my_schema" --username=postgres --password=postgres --liquibaseSchemaName=my_schema generateChangeLog