首页 文章

Liquibase generateChangeLog命令生成无变更集

提问于
浏览
0

按照these指令,在我现有的postgresql数据库上执行generateChangeLog命令,生成的文件不包含changset标记 . 也许我误解了一些东西,但我认为到目前为止对数据库的修改(创建的表等)将在这里总结,这就是"Make It Look Like You've Always Been Using 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:将自动提交设置为false来自真DEBUG 7/20/18 8:15 PM:liquibase:1532117738554的计算校验和为2d79fcfb744a18b475eac6c1d1bd804d DEBUG 7/20/18 8:15 PM:liquibase:执行QUERY数据库命令:SELECT c.relname AS SEQUENCE_NAME FROM pg_class c在c上加入pg_namespace . relnamespace = pg_namespace.oid WHERE c.relkind ='S'和nspname ='public'AND c.oid not in(select d.objid FROM pg_depend d其中d.refobjsubid> 0)INFO 7/20/18 8:15 PM :liquibase:changelog1.xml不存在,创建DEBUG 7/20/18 8:15 PM:liquibase:MissingObjectChangeGenerator类型顺序:liquibase.structure.core.Catalog liquibase.structure.core.Schema liquibase.structure.core.Sequence liquibase .structure.core.StoredProcedure liquibase.structure.core.Table liquibase.structure.core.Column liquibase.structure.core.PrimaryKey liquibase.structure.core.UniqueConstrain t liquibase.structure.core.Index liquibase.structure.core.ForeignKey liquibase.structure.core.View DEBUG 7/20/18 8:15 PM:liquibase:UnexpectedObjectChangeGenerator类型顺序:liquibase.structure.core.Catalog liquibase.structure . core.ForeignKey liquibase.structure.core.Schema liquibase.structure.core.StoredProcedure liquibase.structure.core.UniqueConstraint 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 7/20/18 8:15 PM:liquibase:ChangedObjectChangeGenerator type order:liquibase.structure.core.Catalog liquibase.structure.core.ForeignKey liquibase.structure .core.Schema liquibase.structure.core.Sequence liquibase.structure.core.StoredProcedure liquibase.structure.core.Table liquibase.structure.core.Column liquibase.structure.core.PrimaryKey liquibase.structure.core.UniqueConstraint liquibase.structure . core.Index liquibase.structure.co re.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 7/20/18 8:21 PM:liquibase:将自动提交设置为false来自真DEBUG 7/20/18 8:21 PM:liquibase:执行QUERY数据库命令:从public.databasechangeloglock中选择count()DEBUG 7/20/18 8:21 PM:liquibase:创建数据库锁定表DEBUG 7/20/18 8 :21 PM:liquibase:执行EXECUTE数据库命令:CREATE TABLE public.databasechangeloglock(ID INT NOT NULL,LOCKED BOOLEAN NOT NULL,LOCKGRANTED TIMESTAMP WITHOUT TIME ZONE,LOCKEDBY VARCHAR(255),CONSTRAINT PK_DATABASECHANGELOGLOCK PRIMARY KEY(ID))DEBUG 7 / 20/18 8:21 PM:liquibase:创建的数据库锁定表,其名称为:public.databasechangeloglock DEBUG 7/20/18 8:21 PM:liquibase:执行QUERY数据库命令:从public.databasechangeloglock中选择count()DEBUG 7 / 20/18 8:21 PM:liquibase:初始化数据库锁定表DEBUG 7/20/18 8:21 PM:liquibase:执行EXECUTE数据库命令:DELETE FROM publi c.databasechangeloglock DEBUG 7/20/18 8:21 PM:liquibase:执行EXECUTE数据库命令:INSERT INTO public.databasechangeloglock(ID,LOCKED)VALUES(1,FALSE)DEBUG 7/20/18 8:21 PM:liquibase:执行QUERY数据库命令:SELECT LOCKED FROM public.databasechangeloglock WHERE ID = 1 DEBUG 7/20/18 8:21 PM:liquibase:Lock Database DEBUG 7/20/18 8:21 PM:liquibase:执行UPDATE数据库命令:UPDATEpublic.databasechangeloglock SET LOCKED = TRUE,LOCKEDBY = '10 .0.2.15(10.0.2.15)',LOCKGRANTED ='2018-07-20 20:21:26.650'WHERERE ID = 1 AND LOCKED = FALSE INFO 7/20/18 8 :21 PM:liquibase:成功获取更改日志锁DEBUG 7/20/18 8:21 PM:liquibase:解析XML实体名称='null',publicId ='null',baseURI ='null',systemId ='http: //www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd'DEBUG 7/20/18 8:21 PM:liquibase:打开jar:文件:/home/vagrant/Documents/liquibase.jar!/ liquibase / parser / core / xml / dbchangelog-3.5.xsd as liquibase / parser / core / xml / dbchangelog-3.5.xsd DEBUG 7/20/18 8:21 PM:liquibase:1532118089029的计算校验和为cfbe2a0b147c646104f738103a68b2fd DEBUG 7/20 / 18 8:21 PM:liquibase:创建数据库更改日志表INFO 7/20/18 8:21 PM:liquibase:创建名称为的数据库历史记录表:public.databasechangelog DEBUG 7/20/18 8:21 PM:liquibase:执行EXECUTE数据库命令:CREATE TABLE public.databasechangelog(ID VARCHAR(255)NOT NULL,AUT HOR VARCHAR(255)NOT NULL,FILENAME VARCHAR(255)NOT NULL,DATEEXECUTED TIMESTAMP WITHOUT TIME ZONE NOT NULL,ORDEREXECUTED INT NOT NULL,EXECTYPE VARCHAR(10)NOT NULL,MD5SUM VARCHAR(35),DESCRIPTION VARCHAR(255),评论VARCHAR(255),TAG VARCHAR(255),LIQUIBASE VARCHAR(20),CONTEXTS VARCHAR(255),LABELS VARCHAR(255),DEPLOYMENT_ID VARCHAR(10))DEBUG 7/20/18 8:21 PM:liquibase:执行QUERY database命令:从public.databasechangelog中选择count()INFO 7/20/18 8:21 PM:liquibase:从public.databasechangelog读取DEBUG 7/20/18 8:21 PM:liquibase:执行QUERY数据库命令:SELECT * FROM public.databasechangelog ORDER BY DATEEXECUTED ASC,ORDEREXECUTED ASC DEBUG 7/20/18 8:21 PM:liquibase:执行QUERY数据库命令:select public()from public.databasechangeloglock DEBUG 7/20/18 8:21 PM:liquibase :发布数据库锁DEBUG 7/20/18 8:21 PM:liquibase:执行UPDATE数据库命令:UPDATE public.databasechangeloglock SET LOCKED = FALSE,LOCKEDBY = NUL L,LOCKGRANTED = NULL WHERE ID = 1 INFO 7/20/18 8:21 PM:liquibase:成功发布更改日志锁Liquibase更新成功

现在在Public模式下,有2个表,databasechangelog和databasechangeloglock . databasechangelog为空,但databasechangeloglock包含一行id为1且“locked boolean”col为“FALSE” .

1 回答

  • 0

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

    使用以下内容后成功生成更改集:

    ./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
    

相关问题