1

I am trying to get the Gradle liquibaseDiffChangelog command working with the JHipster Sample Gradle App and I am getting the following exception:

liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: java.lang.RuntimeException: Cannot find database driver: Driver class was not specified and could not be determined from the url ()
    at liquibase.integration.commandline.CommandLineUtils.createDatabaseObject(CommandLineUtils.java:157)
    at liquibase.integration.commandline.Main.doMigration(Main.java:915)
    at liquibase.integration.commandline.Main.run(Main.java:180)
    at liquibase.integration.commandline.Main.main(Main.java:99)
Caused by: liquibase.exception.DatabaseException: java.lang.RuntimeException: Cannot find database driver: Driver class was not specified and could not be determined from the url ()
        at liquibase.database.DatabaseFactory.openConnection(DatabaseFactory.java:247)
        at liquibase.database.DatabaseFactory.openDatabase(DatabaseFactory.java:151)
        at liquibase.integration.commandline.CommandLineUtils.createDatabaseObject(CommandLineUtils.java:85)
        ... 3 common frames omitted
Caused by: java.lang.RuntimeException: Cannot find database driver: Driver class was not specified and could not be determined from the url ()
        at liquibase.database.DatabaseFactory.openConnection(DatabaseFactory.java:199)
        ... 5 common frames omitted
:liquibaseDiffChangelog FAILED

I have modified the liquibase.gradle file to the following to work with my local MySQL database:

configurations {
  liquibase
}

dependencies {
  liquibase group: 'org.liquibase.ext', name: 'liquibase-hibernate4', version: liquibase_hibernate4_version
}

task liquibaseDiffChangelog(dependsOn: compileJava, type: JavaExec) {
  group = "liquibase"

  classpath sourceSets.main.runtimeClasspath
  classpath configurations.liquibase
  main = "liquibase.integration.commandline.Main"

  args "--changeLogFile=src/main/resources/config/liquibase/changelog/" + buildTimestamp() +"_changelog.xml"
  args "--referenceUrl=hibernate:spring:com.mycompany.myapp.domain?dialect=org.hibernate.dialect.MySQL5Dialect"
  args "--username=root"
  args "--password=password"
  args "--url=jdbc:mysql://localhost:3306/app"
  args "--driver=com.mysql.jdbc.Driver"
  args "diffChangeLog"

}

def buildTimestamp() {
  def date = new Date()
  def formattedDate = date.format('yyyyMMddHHmmss')
  return formattedDate
}

The parameters all appear to be correct and similar to the ones described in this guide that uses Maven.

Is there some other step in this process that I am missing and that I cannot find documented anywhere?

Do I need to download the MySQL connector separately and place it in a certain location?

The JHipster Liquibase documentation does not mention any other steps.

Andrew
  • 722
  • 9
  • 17

2 Answers2

0

the problem is that you need also to config the url against your liquibase should run the diff. The config file that you need to edit is liquibase.gradle in the folder gradle in the root of your app:

args "--changeLogFile=src/main/resources/config/liquibase/changelog/" + buildTimestamp() +"_changelog.xml"
args "--referenceUrl=hibernate:spring:io.github.jhipster.sample.domain?dialect=&hibernate.ejb.naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringNamingStrategy"
args "--username=jhipsterGradleSampleApplication"
args "--password="
args "--url=jdbc:mysql://localhost:3306/yourDB"
args "--driver=com.mysql.jdbc.Driver"
args "diffChangeLog"

You need to change the url, username and password in order to work with your db. Cheers!

duderoot
  • 977
  • 1
  • 8
  • 23
0

Use o ?dialect=org.hibernate.dialect.MySQL5InnoDBDialect"