Spring Boot BigQuery 数据源连接
Posted
技术标签:
【中文标题】Spring Boot BigQuery 数据源连接【英文标题】:Spring boot BigQuery datasource connection 【发布时间】:2021-06-18 18:55:27 【问题描述】:我正在尝试使用 Simba jdbc 驱动程序从 Spring Boot 连接 BigQuery,但我遇到了异常。任何输入表示赞赏。我不确定为什么 spring-boot 正在寻找证书。我能够连接简单的 java 主类,但我只在 Spring 启动时收到此错误。
原因:org.springframework.beans.factory.BeanCreationException:创建名为“org.springframework.boot.autoconfigure.jdbc.DataSourceInitializerInvoker”的bean时出错:调用init方法失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:在类路径资源 [com/test/demo/services/config/DBConfig.class] 中定义名称为“getDataSource”的 bean 创建时出错:通过工厂方法进行的 bean 实例化失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 [com.simba.googlebigquery.jdbc42.DataSource]:工厂方法“getDataSource”抛出异常;嵌套异常是 java.sql.SQLException:[Simba]BigQueryJDBCDriver HttpTransport IO 错误:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效认证路径。
DataSource ds = new com.simba.googlebigquery.jdbc42.DataSource();
Connection connection = null;
ds.setURL(
"jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;ProjectId=project)id;OAuthType=0;OAuthServiceAcctEmail=serviceAccountEmail;OAuthPvtKeyPath=p12CertPath;");
ds.setProjectId("projectId");
// ds.setOAuthType(0);
// connection = ds.getConnection();
connection = ds.getConnection();
【问题讨论】:
来自文档:“以下是连接的格式:jdbc:bigquery://[Host]:[Port];ProjectId=[Project];OAuthType=[AuthValue];[Property1]=[Value1];[Property2]=[Value2];...
”。您的网址看起来不像那样。另外,尝试删除;
之后的空格。
【参考方案1】:
从您的 JDBC URL 中删除多余的空格,它们似乎干扰了强制 OAuthPvtKeyPath
、OAuthServiceAcctEmail
参数:
jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;ProjectId=<Your Project ID>;OAuthType=0;OAuthServiceAcctEmail=<Your Email>;OAuthPvtKeyPath=<Path To Cert>;
【讨论】:
删除空格后,我现在收到此错误。 Spring 正在寻找证书路径。但我们没有使用 p12 文件以外的证书 原因:org.springframework.beans.factory.BeanCreationException:创建名称为 dataSource 的 bean 时出错。[com.simba.googlebigquery.jdbc42.DataSource]:工厂方法“getDataSource”抛出异常;嵌套异常是 java.sql.SQLException:[Simba][BigQueryJDBCDriver](100004) HttpTransport IO 错误:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径。以上是关于Spring Boot BigQuery 数据源连接的主要内容,如果未能解决你的问题,请参考以下文章
使用 Spring Boot 调用 BigQuery 存储过程(例程)
使用 spring-boot 连接到 spring-batch 和应用程序数据库