无法将Grails 3.3与mysql数据库连接

时间:2017-08-07 16:51:59

标签: java mysql grails intellij-idea groovy

我一直在尝试从Grails项目连接到MySQL数据库,但我还没有管理它。

我正在使用以下版本的IntelliJ IDEA 17:

| 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

错误

"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

MySQLConnector正在被正确导入,所以我必须在数据源中输入错误的数据。

3 个答案:

答案 0 :(得分:1)

我使用此配置并且工作正常:

<强>的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"

答案 1 :(得分:1)

在grails 3中,dialect是在hibernate部分下指定的,而不是在datasource下。

hibernate:
  dialect: org.hibernate.dialect.MySQL5InnoDBDialect

答案 2 :(得分:1)

我通过删除来自我的两个 [,1] [,2] [,3] [1,] 1.5 4.5 7.5 [2,] 2.5 5.5 8.5 [3,] 3.5 6.5 9.5 域类的tablePerConcreteClass映射,修复了我的Grails 3.2.9项目中的类似问题:

abstract