Liquibase:SQL 不生成

Liquibase: SQL does not generate

我正在努力学习 Liquibase。我正在尝试从我拥有的更新日志中生成 SQL。出于某种原因,它生成的唯一 SQL 是 DATABASECHANGELOGLOCK table.

的锁定

ChangeLog

这位于 com/example/db/changelog

<databaseChangeLog
  xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
         http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">

    <changeSet id="drop-tables" author="ascalonian">
        <dropTable tableName="liquibase" />
    </changeSet>

    <changeSet id="create-tables" author="ascalonian">
        <createTable tableName="liquibase">
            <column name="id" type="NUMERIC(19,0)" autoIncrement="true">
                <constraints primaryKey="true" nullable="false" />
            </column>
            <column name="firstname" type="VARCHAR(50)" />
            <column name="lastname" type="VARCHAR(50)">
                <constraints nullable="false" />
            </column>
        </createTable>
    </changeSet>

    <changeSet id="update-tables" author="ascalonian">
        <addColumn tableName="liquibase">
            <column name="username" type="VARCHAR(10)" />
        </addColumn>
    </changeSet>

</databaseChangeLog>

命令行

java -jar liquibase.jar 
--driver=net.sourceforge.jtds.jdbc.Driver 
--classpath=/Users/<username>/.m2/repository/net/sourceforge/jtds/jtds/1.3.1/jtds-1.3.1.jar 
--changeLogFile=com/example/db/changelog/db.changelog-master.xml 
--url=jdbc:jtds:sqlserver://localhost:1433/TestDB 
--username=username 
--password=password 
updateSQL

SQL输出

-- *********************************************************************
-- Update Database Script
-- *********************************************************************
-- Change Log: com/example/db/changelog/db.changelog-create.xml
-- Ran at: 8/11/15 4:28 PM
-- Against: username@jdbc:jtds:sqlserver://localhost:1433/TestDB
-- Liquibase version: 3.4.1
-- *********************************************************************

-- Lock Database
UPDATE [dbo].[DATABASECHANGELOGLOCK] SET [LOCKED] = 1, [LOCKEDBY] = 'fe80:0:0:0:541c:15ff:fe8f:7826%9 (fe80:0:0:0:541c:15ff:fe8f:7826%9)', [LOCKGRANTED] = '2015-08-11T16:28:18.090' WHERE [ID] = 1 AND [LOCKED] = 0
GO

-- Release Database Lock
UPDATE [dbo].[DATABASECHANGELOGLOCK] SET [LOCKED] = 0, [LOCKEDBY] = NULL, [LOCKGRANTED] = NULL WHERE [ID] = 1
GO

我期待 SQL 用于删除、创建和更新 table 但没有看到任何东西。

Liquibase:版本 3.4.1
数据库:MS SQL 服务器

无法重现您的问题。您是否已经对数据库执行 运行 "update" 命令?这可以解释缺少 SQL(因为更改已经应用到目标数据库)。

DATABASECHANGELOG table 记录应用了哪些变更集。检查 rollbackSQL 命令,它将向您显示撤消操作