Cloud 无法从数据融合连接云SQL mySql/postgreSQL实例

Cloud 无法从数据融合连接云SQL mySql/postgreSQL实例,cloud,google-cloud-sql,sslsocketfactory,google-cloud-data-fusion,Cloud,Google Cloud Sql,Sslsocketfactory,Google Cloud Data Fusion,目标是使用云数据融合连接云SQL mysql或postgreSQL实例 使用MySQL和postgreSQL创建云SQL实例 创建了云数据融合实例 从wrangler>添加连接>云SQL MySQL 添加数据融合实例作为IAM中的成员,并向以下对象添加权限 云SQL客户端 云数据融合API服务代理 在添加连接中,使用jdbc url作为jdbc:mysql://google/mysql?cloudSqlInstance=&socketFactory=com.google.cloud.sql.m

目标是使用云数据融合连接云SQL mysql或postgreSQL实例

  • 使用MySQL和postgreSQL创建云SQL实例
  • 创建了云数据融合实例
  • 从wrangler>添加连接>云SQL MySQL
  • 添加数据融合实例作为IAM中的成员,并向以下对象添加权限 云SQL客户端 云数据融合API服务代理
  • 在添加连接中,使用jdbc url作为jdbc:mysql://google/mysql?cloudSqlInstance=&socketFactory=com.google.cloud.sql.mysql.SocketFactory&useSSL=false
  • 为mySQL添加了驱动程序:mySQL-connector-java-5.1.39-bin.jar
  • 添加MySQL套接字工厂jar作为库
测试连接时失败,错误为:com.mysql.jdbc.Driver


希望与Cloud SQL MySQL的连接测试能够成功,以便构建数据融合管道。

问题在于,您需要提供一个包含驱动程序和连接器的jar。您可以找到有关如何使用驱动程序和JDBC套接字工厂构建uberjar(也称为farjar)的说明

编辑:以下是MySQL的POM:


4.0.0
com.example
mysql与云sql套接字工厂
聚甲醛
0.0.1
mysql
mysql连接器java
8.0.17
com.google.cloud.sql
mysql-socket-factory-connector-j-8
1.0.14
org.apache.maven.plugins
maven汇编插件
2.4.1
带有依赖项的jar
组装
包裹
单一的

问题是您需要提供一个包含驱动程序和连接器的jar。您可以找到有关如何使用驱动程序和JDBC套接字工厂构建uberjar(也称为farjar)的说明

编辑:以下是MySQL的POM:


4.0.0
com.example
mysql与云sql套接字工厂
聚甲醛
0.0.1
mysql
mysql连接器java
8.0.17
com.google.cloud.sql
mysql-socket-factory-connector-j-8
1.0.14
org.apache.maven.plugins
maven汇编插件
2.4.1
带有依赖项的jar
组装
包裹
单一的

看到“error:com.mysql.jdbc.Driver not found”(错误:com.mysql.jdbc.Driver未找到)以及其他无法指出根本原因的内容,有点恼人。然而,数据融合中的错误消息是正确的,因为在安装包时不包括mysql驱动程序类。问题来自这一行:

<scope>provided</scope>
已提供

在该文件中,这意味着目标包将不包括
mysql连接器java
jar文件、包含
com.mysql.jdbc.Driver
和其他文件。如果您在构建jar连接器时不使用前面提到的代码行,则可以解决此错误。

看到“error:com.mysql.jdbc.Driver not found”以及其他无法指出根本原因的内容,会有点恼人。然而,数据融合中的错误消息是正确的,因为在安装包时不包括mysql驱动程序类。问题来自这一行:

<scope>provided</scope>
已提供

在该文件中,这意味着目标包将不包括
mysql连接器java
jar文件、包含
com.mysql.jdbc.Driver
和其他文件。如果您在构建jar连接器时不使用上述行,则可以解决此错误。

可能重复的可能重复感谢@kurtisvg的回复。我已经看过这篇文章了,但我不知道如何制作这个胖罐子。请原谅我的java技能。我有mySQL和postgreSQL的驱动程序jar,它们可能需要嵌入套接字工厂jar。是否已经有可用的uber jar/fat jar版本?或者有更详细的步骤如何制作?你能帮忙吗?@deba-我在原始答案中为MySQL添加了一个pom。您可以将这个POM.xml放在一个空文件夹中,并使用
mvn package
命令在本地创建jar。Hi@kurtisvg!非常感谢您的回复。我按照您为mysql建议的那样创建了jar,并在您提供的pom文件中对connector的版本做了一点小小的更改。我同时使用了5.1.32和8.0.17。在这两种情况下,我都遇到了以下错误:“由以下原因引起:java.lang.NoClassDefFoundError:com/mysql/cj/protocol/SocketFactory”您知道我到底遗漏了什么吗?目标不变:从云数据融合连接mysql云sql实例。致以最诚挚的问候,请使用mysql-socket-factory-connector-j-8 1.0.14删除连接器的两个版本。@deba-您应该将连接器的版本与正在使用的驱动程序的版本相匹配。与5.X相比,8.0.X更受欢迎,因此您需要确保使用
mysql连接器java:8.0.17
mysql-socket-factory-connector-j-8:1.0.14
。验证您的版本号,然后尝试
mvn clean package
。感谢@kurtisvg的回复。我已经看过这篇文章了,但我不知道如何制作这个胖罐子。请原谅我的java技能。我有mySQL和postgreSQL的驱动程序jar,它们可能需要嵌入套接字工厂jar。是否已经有可用的uber jar/fat jar版本?或者有更详细的步骤如何制作?你能帮忙吗?@deba-我加了一个pom