java.lang.IllegalStateException: 无法加载 JDBC 驱动程序 class [com.mysql.jdbc.GoogleDriver]
java.lang.IllegalStateException: Could not load JDBC driver class [com.mysql.jdbc.GoogleDriver]
我正在尝试从 Google 灵活环境 连接到我的数据库到 Google 云 SQL 。连接字符串和驱动程序class如下所示:
<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]
我尝试连接的数据库是 第二代云 SQL MySQL 数据库。
为什么我会收到此异常?
App Engine 有这个 <use-google-connector-j>
属性。对于灵活环境,我还没有看到这个 属性 - 至少在我目前阅读的那些页面上没有看到。在我的 app.yaml 文件中我还需要设置什么吗?
不确定我是否必须在灵活环境中执行此操作,但我目前正在尝试在我的 yaml 文件中将 use-google-connector-j
属性 设置为 true:
use-google-connector-j: true
但目前看来这不起作用:https://code.google.com/p/googleappengine/issues/detail?id=11444
com.mysql.jdbc.GoogleDriver
设计用于 App Engine 标准环境应用程序。
对于 Java 应用程序 运行 App Engine 柔性环境应用程序使用 mysql-socket-factory 库。
对于基于 Maven 的应用程序,添加对库的依赖:
<dependency>
<groupId>com.google.cloud.sql</groupId>
<artifactId>mysql-socket-factory</artifactId>
<version>1.0.1</version>
</dependency>
切换到 standard/official 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
的值可以在 Google 云控制台的云 SQL 实例概览页面上找到。
注意: 如果您在 XML 文件中指定连接字符串,您可能需要转义特殊字符,例如 &
到 &
.
注意:此方法不适用于mysql驱动(6及以上)的开发线。我不得不使用生产 5.1.39 版本。
我正在尝试从 Google 灵活环境 连接到我的数据库到 Google 云 SQL 。连接字符串和驱动程序class如下所示:
<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]
我尝试连接的数据库是 第二代云 SQL MySQL 数据库。
为什么我会收到此异常?
App Engine 有这个 <use-google-connector-j>
属性。对于灵活环境,我还没有看到这个 属性 - 至少在我目前阅读的那些页面上没有看到。在我的 app.yaml 文件中我还需要设置什么吗?
不确定我是否必须在灵活环境中执行此操作,但我目前正在尝试在我的 yaml 文件中将 use-google-connector-j
属性 设置为 true:
use-google-connector-j: true
但目前看来这不起作用:https://code.google.com/p/googleappengine/issues/detail?id=11444
com.mysql.jdbc.GoogleDriver
设计用于 App Engine 标准环境应用程序。
对于 Java 应用程序 运行 App Engine 柔性环境应用程序使用 mysql-socket-factory 库。
对于基于 Maven 的应用程序,添加对库的依赖:
<dependency>
<groupId>com.google.cloud.sql</groupId>
<artifactId>mysql-socket-factory</artifactId>
<version>1.0.1</version>
</dependency>
切换到 standard/official 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
注意: 如果您在 XML 文件中指定连接字符串,您可能需要转义特殊字符,例如 &
到 &
.
注意:此方法不适用于mysql驱动(6及以上)的开发线。我不得不使用生产 5.1.39 版本。