ceid-vg
ceid-vg

Reputation: 323

Unable to connect Grails 3.3 with mysql database

I have been trying to Connect from a Grails project to a MySQL Database but I have not managed it yet.

I am working on IntelliJ IDEA 17 with the following versions:

| Grails Version: 3.3.0.RC1
| Groovy Version: 2.4.12
| JVM Version: 1.8.0_131

build.gradle

dependencies{
     compile files ("lib/mysql-connector-java-5.1.43-bin")
}

application.yml

hibernate:
    cache:
        queries: false
        use_second_level_cache: false
        use_query_cache: false
dataSource:
    pooled: true
    jmxExport: true
    driverClassName: com.mysql.jdbc.Driver
    dialect: org.hibernate.dialect.MySQL5InnoDBDialect
    username: root
    password: ''

environments:
    development:
        dataSource:
            dbCreate: create-drop
            url: jdbc:mysql:3306//localhost/mydatabase
    test:
        dataSource:
            dbCreate: update
            url: jdbc:mysql:3306//localhost/mydatabase
    production:
        dataSource:
            dbCreate: none
            url: jdbc:mysql:3306//localhost/mydatabase

Errors

"C:\Program Files\Java\jdk1.8.0_131\bin\java" -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -XX:CICompilerCount=3 -Djline.WindowsTerminal.directConsole=false -Dfile.encoding=UTF-8 -classpath C:\Users\Vaggelis\AppData\Local\Temp\classpath.jar org.grails.cli.GrailsCli run-app
|Resolving Dependencies. Please wait...

CONFIGURE SUCCESSFUL

Total time: 3.824 secs
|Running application...
2017-08-07 19:42:52.921 ERROR --- [           main] o.a.tomcat.jdbc.pool.ConnectionPool      : Unable to create initial connections of pool.

java.sql.SQLException: Unable to load class: com.mysql.jdbc.Driver from ClassLoader:sun.misc.Launcher$AppClassLoader@18b4aac2;ClassLoader:sun.misc.Launcher$AppClassLoader@18b4aac2

2017-08-07 19:42:55.391 ERROR --- [           main] o.h.engine.jdbc.spi.SqlExceptionHelper   : Unable to load class: com.mysql.jdbc.Driver from ClassLoader:sun.misc.Launcher$AppClassLoader@18b4aac2;ClassLoader:sun.misc.Launcher$AppClassLoader@18b4aac2
2017-08-07 19:42:55.405 ERROR --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Destroy method on bean with name 'org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor' threw an exception

2017-08-07 19:42:55.431 ERROR --- [           main] o.s.boot.SpringApplication               : Application startup failed

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'methodValidationPostProcessor' defined in class path resource [org/springframework/boot/autoconfigure/validation/ValidationAutoConfiguration.class]: Unsatisfied dependency expressed through method 'methodValidationPostProcessor' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateDatastoreServiceRegistry': Cannot resolve reference to bean 'hibernateDatastore' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateDatastore': Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.grails.orm.hibernate.HibernateDatastore]: Constructor threw exception; nested exception is org.hibernate.exception.GenericJDBCException: Unable to check JDBC Connection auto-commit in preparation for DDL execution

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateDatastoreServiceRegistry': Cannot resolve reference to bean 'hibernateDatastore' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateDatastore': Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.grails.orm.hibernate.HibernateDatastore]: Constructor threw exception; nested exception is org.hibernate.exception.GenericJDBCException: Unable to check JDBC Connection auto-commit in preparation for DDL execution

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.grails.orm.hibernate.HibernateDatastore]: Constructor threw exception; nested exception is org.hibernate.exception.GenericJDBCException: Unable to check JDBC Connection auto-commit in preparation for DDL execution

Caused by: org.hibernate.exception.GenericJDBCException: Unable to check JDBC Connection auto-commit in preparation for DDL execution

FAILURE: Build failed with an exception.

What went wrong:
Execution failed for task ':bootRun'.
Process 'command 'C:\Program Files\Java\jdk1.8.0_131\bin\java.exe'' finished with non-zero exit value 1

Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
Error |
Failed to start server (Use --stacktrace to see the full trace)

Process finished with exit code 1

The MySQLConnector is being correctly imported, so somewhere I must have entered wrong data inside the datasource.

Upvotes: 1

Views: 3225

Answers (3)

wubbalubba
wubbalubba

Reputation: 707

I fixed a similar issue in my Grails 3.2.9 project by removing the tablePerConcreteClass mapping from two of my abstract domain classes:

static mapping = {
    tablePerConcreteClass true
}

Upvotes: 1

Jordi Vilaplana
Jordi Vilaplana

Reputation: 435

I'm using this configuration and it's working fine:

build.gradle

dependencies {
    runtime 'mysql:mysql-connector-java:5.1.29'
}

application.yml

hibernate:
    cache:
        queries: false
        use_second_level_cache: true
        use_query_cache: false
        region.factory_class: org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory


dataSource:
    pooled: true
    jmxExport: true


environments:
    development:
        dataSource:
            dbCreate: create-drop
            url: "jdbc:mysql://localhost:3306/mydb?autoReconnect=true"
            driverClassName: "com.mysql.jdbc.Driver"
            dialect: org.hibernate.dialect.MySQL5InnoDBDialect
            username: "yyyyy"
            password: "xxxxx"

Upvotes: 1

Sudhir N
Sudhir N

Reputation: 4096

In grails 3 dialect is specified under hibernate section and not under datasource.

hibernate:
  dialect: org.hibernate.dialect.MySQL5InnoDBDialect

Upvotes: 1

Related Questions