Java 为什么在扳手仿真器上运行的扳手spring演示无法创建池数据库连接?

Java 为什么在扳手仿真器上运行的扳手spring演示无法创建池数据库连接?,java,google-cloud-spanner,spring-boot-jpa,google-cloud-spanner-emulator,Java,Google Cloud Spanner,Spring Boot Jpa,Google Cloud Spanner Emulator,我无法让谷歌在扳手模拟器上运行。我在MacOS Mojave上使用预安装的JDK 11(采用OpenJDK build 11.0.3+7) 我已经根据我的GCP帐户进行了身份验证,并按照文档中的说明进行了仿真器设置,按照说明启动仿真器,成功创建了一个实例,并且已经将panner\u emulator\u HOST环境变量设置为localhost:9010 当Spring应用程序运行时,会出现以下错误: java.sql.SQLTransientConnectionException: Hikar

我无法让谷歌在扳手模拟器上运行。我在MacOS Mojave上使用预安装的JDK 11(采用OpenJDK build 11.0.3+7)

我已经根据我的GCP帐户进行了身份验证,并按照文档中的说明进行了仿真器设置,按照说明启动仿真器,成功创建了一个实例,并且已经将
panner\u emulator\u HOST
环境变量设置为
localhost:9010

当Spring应用程序运行时,会出现以下错误:

java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30088ms.
在此之前有两个警告。HH000342:无法获取到查询元数据的连接)和SQL错误:0,SQLState:null

如果我更新spring.datasource.url,在末尾添加
useplantext=true
,我认为这是一个建议的解决方案,结果是相同的

应用程序代码和配置完全如中所示,这就是为什么我没有在这里发布它-除了Application.properties中
spring.datasource.url
的值(见下文)。要复制此问题,请按照emulator设置说明进行操作,克隆存储库,设置项目、实例和数据库变量,然后运行代码示例

以下是
application.properties
文件的内容:

# Application configuration to use Cloud Spanner with Spring Data JPA

# Spanner connection URL.
# - ${PROJECT_ID} Replace with your GCP project ID
# - ${INSTANCE_ID} Replace with your Spanner instance ID
# - ${DATABASE_NAME} Replace with your Spanner database name within your Spanner instance
spring.datasource.url=jdbc:cloudspanner:/projects/test-project/instances/test-instance/databases/spring-demo?usePlainText=true

# Specify the Spanner JDBC driver.
spring.datasource.driver-class-name=com.google.cloud.spanner.jdbc.JdbcDriver

# Specify the Spanner Hibernate dialect.
spring.jpa.properties.hibernate.dialect=com.google.cloud.spanner.hibernate.SpannerDialect

spring.jpa.hibernate.ddl-auto=update

# Settings to enable batching statements for efficiency
spring.jpa.properties.hibernate.jdbc.batch_size=100

# You may display SQL statements and stats for debugging if needed.
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true

尽管经过仔细检查,我们还是错过了建立数据库的一个重要步骤:

gcloud spanner databases create spring-demo --instance=test-instance 

现在一切都好了。

您介意分享application.properties的内容吗?我无法重现您的问题,我注意到您似乎也在application.properties中设置了spring.datasource.url。如果您正在设置环境变量paner\u EMULATOR\u HOST,则不需要这样做。此外,spring data jpa示例项目使用spring cloud gcp data Paner,而不是JDBC驱动程序来连接到Paner。所以这里应该根本没有连接池。您是否向项目中添加了一个或多个附加依赖项?抱歉,我链接到了错误的示例项目。现在修复了链接,并添加了应用程序的内容。properties@KnutOlavLoite这个存储库——是一个带有JPA/Hibernate/JDBC的极简版Spring Boot应用程序,在模拟器上运行时,它完美地演示了这个问题。这是一个好消息。我仍然会查看错误消息,因为这条消息对于基本上似乎是“数据库未找到”的消息来说相当神秘。