Uploaded image for project: 'Liquibase Core'
  1. CORE-3383

liquibase:diff command throws Null pointer exception

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects versions: 3.6.0
    • Fix versions: 3.3.6
    • Components: Maven
    • Environment:

      Spring Boot(2.1.2) application with MySql database on macOS

    • Sprint:

      Description

      I generated liquibase schema with mvn liquibase:generateChangeLog, and when I try to execute the diff command with mvn liquibase:diff I get an error message Error getting default schema java.lang.NullPointerException. Not sure what's wrong with my configuration. I am testing Liquibase 3.6 with Spring Boot and Spring JPA

      Error Message

      mvn liquibase:diff
      [INFO] Scanning for projects...
      [INFO] 
      [INFO] -------------------------< com:liquibasetest >--------------------------
      [INFO] Building liquibasetest 0.0.1-SNAPSHOT
      [INFO] --------------------------------[ jar ]---------------------------------
      [INFO] 
      [INFO] --- liquibase-maven-plugin:3.6.3:diff (default-cli) @ liquibasetest ---
      [INFO] ------------------------------------------------------------------------
      [INFO] Parsing Liquibase Properties File
      [INFO]   File: src/main/resources/liquibase.properties
      [INFO]   'outputChangeLogFile' in properties file is not being used by this task.
      [INFO] ------------------------------------------------------------------------
      [INFO] Starting Liquibase at Tue, 12 Feb 2019 00:05:05 EST (version 3.6.3 built at 2019-01-29 11:34:48)
      [WARNING] Can not use class liquibase.ext.hibernate.database.HibernateSpringDatabase as a Liquibase service because org.springframework.beans.factory.support.BeanDefinitionRegistry is not in the classpath
      [INFO] Executing on Database: jdbc:mysql://localhost:3306/flywaytest?currentSchema=flywaytest
      [WARNING] Unknown database: Hibernate
      [INFO] Performing Diff on database root@localhost @ jdbc:mysql://localhost:3306/flywaytest?currentSchema=flywaytest (Default Schema: flywaytest)
      [INFO] Error getting default schema
      java.lang.NullPointerException
          at liquibase.executor.jvm.JdbcExecutor$QueryCallableStatementCallback.doInCallableStatement (JdbcExecutor.java:452)
          at liquibase.executor.jvm.JdbcExecutor.execute (JdbcExecutor.java:93)
          at liquibase.executor.jvm.JdbcExecutor.query (JdbcExecutor.java:135)
          at liquibase.executor.jvm.JdbcExecutor.query (JdbcExecutor.java:146)
          at liquibase.executor.jvm.JdbcExecutor.queryForObject (JdbcExecutor.java:154)
          at liquibase.executor.jvm.JdbcExecutor.queryForObject (JdbcExecutor.java:169)
          at liquibase.executor.jvm.JdbcExecutor.queryForObject (JdbcExecutor.java:164)
          at liquibase.database.AbstractJdbcDatabase.getConnectionSchemaName (AbstractJdbcDatabase.java:327)
          at liquibase.database.AbstractJdbcDatabase.getDefaultSchemaName (AbstractJdbcDatabase.java:292)
          at liquibase.CatalogAndSchema.customize (CatalogAndSchema.java:151)
          at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot (SnapshotGeneratorFactory.java:184)
          at liquibase.command.core.DiffCommand.createReferenceSnapshot (DiffCommand.java:221)
          at liquibase.command.core.DiffCommand.createDiffResult (DiffCommand.java:143)
          at liquibase.command.core.DiffToChangeLogCommand.run (DiffToChangeLogCommand.java:51)
          at liquibase.command.AbstractCommand.execute (AbstractCommand.java:19)
          at liquibase.integration.commandline.CommandLineUtils.doDiffToChangeLog (CommandLineUtils.java:237)
          at liquibase.integration.commandline.CommandLineUtils.doDiffToChangeLog (CommandLineUtils.java:212)
          at org.liquibase.maven.plugins.LiquibaseDatabaseDiff.performLiquibaseTask (LiquibaseDatabaseDiff.java:177)
          at org.liquibase.maven.plugins.AbstractLiquibaseMojo.execute (AbstractLiquibaseMojo.java:366)
          at org.liquibase.maven.plugins.LiquibaseDatabaseDiff.execute (LiquibaseDatabaseDiff.java:136)
          at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
          at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
          at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
          at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
          at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
          at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
          at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
          at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
          at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
          at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
          at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
          at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke (Method.java:498)
          at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
          at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
          at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
          at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
      [INFO] ------------------------------------------------------------------------
      [INFO] BUILD FAILURE
      [INFO] ------------------------------------------------------------------------
      [INFO] Total time:  3.773 s
      [INFO] Finished at: 2019-02-12T00:05:07-05:00
      [INFO] ------------------------------------------------------------------------
      [ERROR] Failed to execute goal org.liquibase:liquibase-maven-plugin:3.6.3:diff (default-cli) on project liquibasetest: Error setting up or running Liquibase: liquibase.command.CommandExecutionException: java.lang.NullPointerException -> [Help 1]
      [ERROR] 
      [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
      [ERROR] Re-run Maven using the -X switch to enable full debug logging.
      [ERROR] 
      [ERROR] For more information about the errors and possible solutions, please read the following articles:
      [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
      

      liquibase.properties

      outputChangeLogFile= src/main/resources/db/db.changelog-master.xml
      driver=com.mysql.cj.jdbc.Driver
      url=jdbc:mysql://localhost:3306/flywaytest?currentSchema=flywaytest
      username=root
      password=bcmc1234
      

      db.changlog-master.xml

      <?xml version="1.1" encoding="UTF-8" standalone="no"?>
      <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
          <changeSet author="pjadda (generated)" id="1549947881457-1">
              <createTable tableName="country">
                  <column name="id" type="BIGINT">
                      <constraints primaryKey="true"/>
                  </column>
                  <column name="name" type="VARCHAR(45)"/>
                  <column name="code" type="VARCHAR(45)"/>
                  <column name="iso_code" type="VARCHAR(45)"/>
                  <column name="region_id" type="BIGINT"/>
              </createTable>
          </changeSet>
          <changeSet author="pjadda (generated)" id="1549947881457-2">
              <createTable tableName="region">
                  <column name="id" type="BIGINT">
                      <constraints primaryKey="true"/>
                  </column>
                  <column name="name" type="VARCHAR(45)"/>
              </createTable>
          </changeSet>
          <changeSet author="pjadda (generated)" id="1549947881457-3">
              <createIndex indexName="region_fk_idx" tableName="country">
                  <column name="region_id"/>
              </createIndex>
          </changeSet>
          <changeSet author="pjadda (generated)" id="1549947881457-4">
              <addForeignKeyConstraint baseColumnNames="region_id" baseTableName="country" constraintName="region_fk" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="region" validate="true"/>
          </changeSet>
      </databaseChangeLog>
      
      

      pom.xml

      
      <?xml version="1.0" encoding="UTF-8"?>
      <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>
          <parent>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-parent</artifactId>
              <version>2.1.2.RELEASE</version>
              <relativePath/> <!-- lookup parent from repository -->
          </parent>
          <groupId>com</groupId>
          <artifactId>liquibasetest</artifactId>
          <version>0.0.1-SNAPSHOT</version>
          <name>liquibasetest</name>
          <description>Liquibase Test project for Spring Boot</description>
      
          <properties>
              <java.version>1.8</java.version>
              <spring-boot.version>2.1.1.RELEASE</spring-boot.version>
              <spring-boot-admin.version>2.1.1</spring-boot-admin.version>
              <hibernate.version>5.4.0.Final</hibernate.version>
              <liquibase-maven-plugin.version>3.6.3</liquibase-maven-plugin.version>
              <liquibase-hibernate5.version>3.6</liquibase-hibernate5.version>
          </properties>
      
          <dependencies>
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-actuator</artifactId>
              </dependency>
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-web</artifactId>
              </dependency>
      
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-data-jpa</artifactId>
              </dependency>
              <dependency>
                  <groupId>com.fasterxml.jackson.core</groupId>
                  <artifactId>jackson-core</artifactId>
              </dependency>
      
              <dependency>
                  <groupId>com.fasterxml.jackson.core</groupId>
                  <artifactId>jackson-databind</artifactId>
              </dependency>
              <dependency>
                  <groupId>org.hibernate</groupId>
                  <artifactId>hibernate-envers</artifactId>
                  <version>${hibernate.version}</version>
              </dependency>
              <dependency>
                  <groupId>org.liquibase</groupId>
                  <artifactId>liquibase-core</artifactId>
              </dependency>
              <dependency>
                  <groupId>org.liquibase</groupId>
                  <artifactId>liquibase-maven-plugin</artifactId>
                  <version>${liquibase-maven-plugin.version}</version>
              </dependency>
      
      
              <dependency>
                  <groupId>de.codecentric</groupId>
                  <artifactId>spring-boot-admin-starter-client</artifactId>
              </dependency>
              <dependency>
                  <groupId>de.codecentric</groupId>
                  <artifactId>spring-boot-admin-starter-server</artifactId>
              </dependency>
      
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-devtools</artifactId>
                  <scope>runtime</scope>
              </dependency>
      <!--        <dependency>
                  <groupId>com.h2database</groupId>
                  <artifactId>h2</artifactId>
                  <scope>runtime</scope>
              </dependency>-->
              <dependency>
                  <groupId>mysql</groupId>
                  <artifactId>mysql-connector-java</artifactId>
                  <scope>runtime</scope>
              </dependency>
              <dependency>
                  <groupId>org.projectlombok</groupId>
                  <artifactId>lombok</artifactId>
                  <optional>true</optional>
              </dependency>
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-test</artifactId>
                  <scope>test</scope>
              </dependency>
          </dependencies>
      
          <dependencyManagement>
              <dependencies>
                  <dependency>
                      <groupId>de.codecentric</groupId>
                      <artifactId>spring-boot-admin-dependencies</artifactId>
                      <version>${spring-boot-admin.version}</version>
                      <type>pom</type>
                      <scope>import</scope>
                  </dependency>
              </dependencies>
          </dependencyManagement>
      
          <build>
              <plugins>
                  <plugin>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-maven-plugin</artifactId>
                  </plugin>
      
                  <plugin>
                      <groupId>org.liquibase</groupId>
                      <artifactId>liquibase-maven-plugin</artifactId>
                      <version>${liquibase-maven-plugin.version}</version>
                      <configuration>
                          <propertyFile>src/main/resources/liquibase.properties</propertyFile>
                          <changeLogFile>src/main/resources/db/db.changelog-master.xml</changeLogFile>
                          <diffChangeLogFile>src/main/resources/db/changelog/${maven.build.timestamp}_changelog.xml</diffChangeLogFile>
                          <logging>info</logging>
                      </configuration>
        <!--              <executions>
                          <execution>
                              <id>generate-db-prev</id>
                              <phase>process-resources</phase>
                              <goals>
                                  <goal>update</goal>
                              </goals>
                              <configuration>
                                  <dropFirst>true</dropFirst>
                              </configuration>
                          </execution>
                          <execution>
                              <id>generate-db-diff</id>
                              <phase>process-test-resources</phase>
                              <goals>
                                  <goal>diff</goal>
                              </goals>
                          </execution>
                      </executions>-->
                      <dependencies>
                          <dependency>
                              <groupId>org.liquibase.ext</groupId>
                              <artifactId>liquibase-hibernate4</artifactId>
                              <version>3.6</version>
                          </dependency>
                      </dependencies>
      
                  </plugin>
              </plugins>
          </build>
      
      </project>
      

        Attachments

          Activity

            People

            • Reporter:
              jpavanaryan Pavan Jadda
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: