2015-08-11 5 views
0

Я работаю над изучением Liquibase. Я работаю над созданием SQL из списка изменений, который у меня есть. По какой-то причине единственным SQL, который он генерирует, является блокировка таблицы DATABASECHANGELOGLOCK.Liquibase: SQL не генерирует

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 Output

-- ********************************************************************* 
-- Update Database Script 
-- ********************************************************************* 
-- Change Log: com/example/db/changelog/db.changelog-create.xml 
-- Ran at: 8/11/15 4:28 PM 
-- Against: [email protected]: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 закроет, создаст и обновит таблицу, но ничего не увидит.

LiquiBase: Версия 3.4.1
База данных: MS SQL Server

+0

Чтобы сгенерировать SQL, вам нужно будет запустить его против пустой базы данных (ни одна из таблиц в списке изменений в базе данных). Кроме того, ваш журнал изменений немного странный, потому что он начинается с таблицы drop. Это будет иметь эффект только в том случае, если база данных, с которой вы ее запускали, уже имела таблицу, созданную с помощью механизма без жидкости. – SteveDonie

ответ

2

Не удается воспроизвести проблему. Вы уже запускали команду «update» в отношении вашей базы данных? Это объясняет отсутствие SQL (поскольку изменения уже были применены к целевой БД).

В таблице DATABASECHANGELOG используются таблицы изменений. Оформить команду rollbackSQL, которая покажет вам действия отмены

Смежные вопросы