java.lang.IllegalStateException:无法加载JDBC驱动类[com.my

2019-05-12 07:55发布

我试图连接到我的数据库从谷歌灵活的环境谷歌云SQL。 连接字符串和驱动程序类如下所示:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.GoogleDriver" />
    <property name="url" value="jdbc:google:mysql://mz-test:us-central1:mz-life-cloudsql-prod/mz_db" />
    <property name="username" value="root" />
    <property name="password" value="" />
</bean>

不过,我目前得到

org.springframework.beans.factory.BeanCreationException: 
    Error creating bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/classes/context/applicationContext-jooq.xml]: 
            Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; 
            nested PropertyAccessExceptions (1) are:|PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'driverClassName' threw exception; 
            nested exception is java.lang.IllegalStateException: Could not load JDBC driver class [com.mysql.jdbc.GoogleDriver]

我试图连接到数据库是第二代的Cloud SQL的MySQL数据库。

为什么会出现这种异常?

在应用程序引擎有这个<use-google-connector-j>属性。 我从来没见过这个属性的灵活的环境 - 至少不会对这些东西我一直到目前为止阅读的页面。 有什么我不得不在addtion设置在我的app.yaml文件?


不知道如果我必须这样做,在灵活的环境,但我目前正在设置use-google-connector-j属性为true在我的YAML文件:

use-google-connector-j: true

但现在看来,这是不工作的时刻: https://code.google.com/p/googleappengine/issues/detail?id=11444

Answer 1:

com.mysql.jdbc.GoogleDriver旨在为App Engine的标准环境的应用程序。

对于在App Engine上灵活的环境中运行的应用程序的Java应用程序使用的mysql-插座厂库。

对于基于Maven的应用程序,添加对库的依赖性:

<dependency>
    <groupId>com.google.cloud.sql</groupId>
    <artifactId>mysql-socket-factory</artifactId>
    <version>1.0.1</version>
</dependency>

切换到标准/官方com.mysql.jdbc.Driver 。 从连接字符串的变化

jdbc:google:mysql://instance_name/db_name

jdbc:mysql://google/db_name?cloudSqlInstance=<instance_connection_name>&socketFactory=com.google.cloud.sql.mysql.SocketFactory

对于<instance_connection_name>可以在谷歌云端控制台Cloud SQL执行概述页面上找到价值。

注:如果您在指定XML文件中的连接字符串,你可能有逃避特殊字符,如&&amp;

注意:此方法不使用MySQL驱动(6及以上)的开发线上工作。 我不得不使用生产39年5月1日的版本。



文章来源: java.lang.IllegalStateException: Could not load JDBC driver class [com.mysql.jdbc.GoogleDriver]