liquibase.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Tue, 22 Dec 2015 22:29:00 +0200
changeset 1840 da2130eaa115
parent 1838 031c61d1a8bd
child 1842 e66fcbaf99fa
permissions -rw-r--r--
How changelogs are identified.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1838
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     1
.. -*- coding: utf-8; -*-
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     2
.. include:: HEADER.rst
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     3
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     4
============
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     5
 LiquiBase.
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     6
============
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     7
.. contents::
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     8
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     9
Introducing LiquiBase to existing project.
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    10
==========================================
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    11
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    12
Official statement about introducing LiquiBase to existing project are:
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    13
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    14
  http://www.liquibase.org/documentation/existing_project.html
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    15
    Adding Liquibase on an Existing project
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    16
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    17
There are two approaches:
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    18
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    19
 * create full schema definition prior to introducing Liquibase
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    20
 * works only with current changes becase Liquibase basically work only with changesets and only
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    21
   special supplied instruments care about full schema definition
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    22
1840
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    23
To create full schema definition in LiquiBase XML changelog format you may run::
1838
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    24
1840
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    25
  $ mvn liquibase:generateChangeLog -Dliquibase.outputChangeLogFile=...
1838
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    26
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    27
on clean project without Liquibase. Or set name for changelog output file in ``pom.xml``.
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    28
(here reduced not fully worked declaration)::
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    29
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    30
  <plugin>
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    31
      <groupId>org.liquibase</groupId>
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    32
      <artifactId>liquibase-maven-plugin</artifactId>
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    33
      <version>${liquibase.version}</version>
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    34
      <configuration>
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    35
          <outputChangeLogFile>changelog.xml</outputChangeLogFile>
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    36
      </configuration>
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    37
  </plugin>
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    38
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    39
.. NOTE::
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    40
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    41
   ``pom.xml`` settings have precedence over ``-Dliquibase.outputChangeLogFile=...`` unless you
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    42
   define it as::
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    43
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    44
     <properties>
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    45
         <liquibase.outputChangeLogFile>${project.build.directory}/changelog.xml</liquibase.outputChangeLogFile>
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    46
     </properties>
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    47
     <plugins>
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    48
         <plugin>
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    49
             <configuration>
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    50
                 <outputChangeLogFile>${liquibase.outputChangeLogFile}</outputChangeLogFile>
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    51
             </configuration>
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    52
         </plugin>
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    53
     </plugins>
031c61d1a8bd Introducing LiquiBase to existing project.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    54
1840
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    55
To create full schema definition in LiquiBase SQL format you may first to dump
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    56
your schema definition::
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    57
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    58
  $ mysqldump --no-data -u $USER -p $DB_NAME > schema.sql
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    59
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    60
then check ``schema.sql`` for danger operations. For example I forget to add
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    61
``--skip-add-drop-table`` option to ``mysqldump`` and so remove any ``DROP
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    62
TABLE`` lines by editor.
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    63
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    64
Becase we already have tables I replace ``CREATE TABLE`` statements with::
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    65
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    66
  CREATE TABLE IF NOT EXISTS
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    67
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    68
Now my file is safely can be applied to production database without loosing
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    69
data and can recreate new schema in empty database.
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    70
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    71
Generate difference between databases.
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    72
======================================
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    73
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    74
`This site
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    75
<http://www.broadleafcommerce.com/docs/core/current/appendix/managing-db-versions-migrations-with-liquibase>`_
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    76
suggest using Hibernate ``hibernate.hbm2ddl.auto=create`` to create clean schema
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    77
with Hibernate and compare it with previous one. So you:
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    78
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    79
 * create empty schema and grand permissions for user
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    80
 * register project to new user and schema, for example with Spring config::
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    81
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    82
    <bean id="dataSource"
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    83
       class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    84
       <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    85
       <property name="url" value="jdbc:mysql://localhost:3306/app"/>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    86
       <property name="username" value="dbuser"/>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    87
       <property name="password" value="123456"/>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    88
    </bean>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    89
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    90
    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    91
       <property name="dataSource" ref="dataSource" />
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    92
       <property name="jpaVendorAdapter">
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    93
           <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    94
               <property name="generateDdl" value="false"/>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    95
               <property name="showSql" value="false"/>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    96
           </bean>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    97
       </property>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    98
       <property name="packagesToScan" value="com.app.domain" />
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
    99
       <property name="jpaProperties">
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   100
          <props>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   101
              <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   102
              <prop key="hibernate.hbm2ddl.auto">create</prop>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   103
              <prop key="hibernate.default_schema">schema_v2_0</prop>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   104
          </props>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   105
       </property>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   106
    </bean>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   107
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   108
 * run Hibernate initialisation code via test or application deploy so
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   109
   ``hibernate.hbm2ddl.auto=create`` trigger to new schema generation.
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   110
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   111
 * configure Maven ``pom.xml`` with paths and authentication data to old and new
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   112
   schema::
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   113
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   114
     <plugin>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   115
         <groupId>org.liquibase</groupId>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   116
         <artifactId>liquibase-maven-plugin</artifactId>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   117
         <version>${liquibase.version}</version>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   118
         <configuration>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   119
             <changeLogFile>${basedir}/src/main/resources/sql/master.xml</changeLogFile>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   120
             <diffChangeLogFile>changelogDiff.xml</diffChangeLogFile>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   121
             <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   122
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   123
             <driver>com.mysql.jdbc.Driver</driver>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   124
             <username>dbuser</username>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   125
             <password>123456</password>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   126
             <url>jdbc:mysql://localhost:3306/app</url>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   127
             <defaultSchemaName>schema_v1.1</defaultSchemaName>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   128
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   129
             <referenceDriver>com.mysql.jdbc.Driver</referenceDriver>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   130
             <referenceUsername>dbuser</referenceUsername>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   131
             <referencePassword>123456</referencePassword>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   132
             <referenceUrl>jdbc:mysql://127.0.0.1:3306/app</referenceUrl>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   133
             <referenceDefaultSchemaName>schema_v2.0</referenceDefaultSchemaName>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   134
         </configuration>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   135
         <dependencies>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   136
             <dependency>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   137
                 <groupId>mysql</groupId>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   138
                 <artifactId>mysql-connector-java</artifactId>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   139
                 <version>5.1.6</version>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   140
             </dependency>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   141
         </dependencies>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   142
     </plugin>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   143
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   144
   .. NOTE::
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   145
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   146
      ``username`` and ``referenceUsername`` as ``url`` and ``referenceUrl``,
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   147
      and ``defaultSchemaName`` and ``referenceDefaultSchemaName``, etc pairs
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   148
      should be adopted to your connection/authentication data. This settings
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   149
      also possible externalize to::
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   150
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   151
        <changeLogFile>${basedir}/src/main/resources/sql/master.xml</changeLogFile>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   152
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   153
 * Review diff in ``changelogDiff.xml`` after::
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   154
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   155
     $ mvn liquibase:diff
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   156
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   157
Resulted ``changelogDiff.xml`` may be registered to project with ``schema_v1.1``
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   158
schema state.
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   159
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   160
It is possible to move inner part of ``changelogDiff.xml`` to the last changeset
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   161
that managed by LiquiBase in your project.
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   162
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   163
Alternatively that file may be registered via ``<include file="..."/>`` syntax.
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   164
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   165
After that staying in project at ``schema_v1.1`` state you may upgrade from
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   166
``schema_v1.1`` to ``schema_v2.0`` schema by::
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   167
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   168
  $ mvn liquibase:update
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   169
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   170
Or create, review and apply SQL upgrade script (for your DBA)::
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   171
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   172
  $ mvn liquibase:updateSQL
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   173
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   174
TODO:
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   175
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   176
  $ mvn liquibase:update -Dliquibase.changesToApply=1
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   177
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   178
Generating difference between database and JPA.
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   179
===============================================
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   180
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   181
LiquiBase come with plug-in which mimics like SQL driver. So we may run::
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   182
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   183
  $ mvn liquibase:diff
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   184
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   185
to get difference in LiquiBase XML format between our current database and JPA
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   186
schema description.
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   187
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   188
With::
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   189
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   190
  $ mvn liquibase:updateSQL
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   191
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   192
we get SQL update code to state that described by Hibernate.
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   193
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   194
Depending on Hibernate metadata form we shoud adapt ``referenceUrl`` property.
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   195
For example for Spring enabled project with JPA annotations::
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   196
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   197
  <referenceUrl>hibernate:spring:com.app.domain?dialect=org.hibernate.dialect.MySQLDialect</referenceUrl>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   198
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   199
Here ``com.app.domain`` represent package with JPA annotated entities.
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   200
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   201
So complete reference visit:
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   202
https://github.com/liquibase/liquibase-hibernate/wiki
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   203
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   204
Also we need Spring Beans and LiquiBase driver in classpath to resolve
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   205
dependencies during diff calculation. Complete Maven piece look like::
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   206
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   207
  <plugin>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   208
      <groupId>org.liquibase</groupId>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   209
      <artifactId>liquibase-maven-plugin</artifactId>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   210
      <version>${liquibase.version}</version>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   211
      <configuration>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   212
          <changeLogFile>${basedir}/src/main/resources/sql/master.xml</changeLogFile>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   213
          <propertyFile>${liquibase.profile}</propertyFile>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   214
          <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   215
          <logging>info</logging>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   216
          <driver>com.mysql.jdbc.Driver</driver>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   217
          <defaultSchemaName>app</defaultSchemaName>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   218
          <changelogSchemaName>app</changelogSchemaName>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   219
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   220
          <!-- For mvn liquibase:updateSQL -->
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   221
          <migrationSqlOutputFile>migration.sql</migrationSqlOutputFile>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   222
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   223
          <referenceUrl>hibernate:spring:com.app.domain?dialect=org.hibernate.dialect.MySQLDialect</referenceUrl>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   224
          <diffChangeLogFile>changelogDiff.xml</diffChangeLogFile>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   225
          <diffTypes>tables,views,columns,indexes,foreignkeys,primarykeys,uniqueconstraints</diffTypes>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   226
      </configuration>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   227
      <dependencies>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   228
          <dependency>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   229
              <groupId>org.springframework.data</groupId>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   230
              <artifactId>spring-data-jpa</artifactId>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   231
              <version>${spring-data.version}</version>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   232
          </dependency>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   233
          <dependency>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   234
              <groupId>org.liquibase.ext</groupId>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   235
              <artifactId>liquibase-hibernate4.2</artifactId>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   236
              <version>3.5</version>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   237
          </dependency>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   238
      </dependencies>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   239
  </plugin>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   240
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   241
http://stackoverflow.com/questions/27877154/liquibase-and-jpa-annotated-entities
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   242
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   243
http://www.baeldung.com/liquibase-refactor-schema-of-java-app
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   244
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   245
How changelogs are identified.
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   246
==============================
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   247
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   248
Upstream deside use three field to identify changeset:
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   249
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   250
 * each changeset mandatory marked by pair of ``user:id`` (which is actually any
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   251
   non-whitespace characters)
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   252
 * full path to file with changeset
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   253
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   254
``user:id`` is actually any non-whitespace and non-colon text with
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   255
non-whitespace text. Upstream suggest to use changeset authro identity for
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   256
``user`` and numbers or reason/name for changeset for ``id``.
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   257
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   258
``user:id`` pair should be unique for file.
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   259
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   260
Reason to capture full path as part of identifier is very dumb. Upstream
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   261
arguments:
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   262
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   263
 * http://forum.liquibase.org/topic/why-does-the-change-log-contain-the-file-name
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   264
 * http://forum.liquibase.org/topic/i-need-to-ignore-the-filename-in-the-processing-to-see-if-a-change-set-has-already-been-applied
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   265
 * http://forum.liquibase.org/topic/logical-filepath-in-change-sets-and-changelog
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   266
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   267
is very Java centric and require sticking to fixed changeset file location in
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   268
``CLASSPATH``.
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   269
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   270
When you work with same file on different hosts / tools you should very
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   271
carefully check that path satisfy conventions that used with previous LiquiBase
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   272
work for concrete DB.
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   273
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   274
I have incompatibilities between String integration and Maven plug-in. Because I
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   275
use full path in Maven and CLASSPATH relative in String.
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   276
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   277
Hopefully there is logicalFilePath attribute.
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   278
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   279
In XML syntax in may be applied to top level tag::
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   280
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   281
  <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   282
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   283
                     xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd"
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   284
                     logicalFilePath="legacy.xml">
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   285
      ...
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   286
  </databaseChangeLog>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   287
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   288
or may be overridden by each changeset::
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   289
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   290
  <changeSet author="admin" id="fix-25" logicalFilePath="fix.xml">
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   291
     ...
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   292
  </changeSet>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   293
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   294
SQL syntax also have ``logicalFilePath`` attribute for top level file mark
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   295
(implemented in v3.3):
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   296
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   297
    --liquibase formatted sql  logicalFilePath:legacy.sql
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   298
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   299
and may be overridden by each changeset::
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   300
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   301
    --changeset legacy:1  logicalFilePath:other.sql
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   302
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   303
To verify that settings have effect run::
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   304
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   305
  mvn liquibase:changelogSyncSQL
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   306
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   307
and review migration.sql. Corresponding ``pom.xml`` part::
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   308
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   309
  <plugin>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   310
      <groupId>org.liquibase</groupId>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   311
      <artifactId>liquibase-maven-plugin</artifactId>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   312
      <version>${liquibase.version}</version>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   313
      <configuration>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   314
          <changeLogFile>${basedir}/src/main/resources/sql/master.xml</changeLogFile>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   315
          <propertyFile>${liquibase.profile}</propertyFile>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   316
          <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   317
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   318
          <migrationSqlOutputFile>migration.sql</migrationSqlOutputFile>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   319
      </configuration>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   320
  </plugin>
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   321
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   322
..
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   323
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   324
 * http://stackoverflow.com/questions/19896436/how-to-configure-liquibase-not-to-include-file-path-or-name-for-calculating-chec
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   325
 * http://stackoverflow.com/questions/19959755/liquibase-how-to-disable-filename-column-check
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   326
 * http://stackoverflow.com/questions/18767815/refactoring-liquibase-changelog-files
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   327
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   328
Consult
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   329
``liquibase-core/src/main/java/liquibase/parser/core/formattedsql/FormattedSqlChangeLogParser.java``
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   330
for further info .
da2130eaa115 How changelogs are identified.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1838
diff changeset
   331