首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将Spring应用程序引擎与Postgresql连接起来

无法将Spring应用程序引擎与Postgresql连接起来
EN

Stack Overflow用户
提问于 2020-03-15 06:41:29
回答 1查看 680关注 0票数 1

因此,我一直试图将我的Spring应用程序(在Google中)连接到一个云SQL (Postgresql),并收到以下错误:

代码语言:javascript
复制
A 2020-03-15T04:58:41.951800182Z org.postgresql.util.PSQLException: The connection attempt failed. 
A 2020-03-15T04:58:41.951800183Z    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:272) ~[postgresql-9.4.1212.jre7.jar!/:9.4.1212.jre7] 
A 2020-03-15T04:58:41.951800184Z    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:51) ~[postgresql-9.4.1212.jre7.jar!/:9.4.1212.jre7] 
A 2020-03-15T04:58:41.951800185Z    at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:215) ~[postgresql-9.4.1212.jre7.jar!/:9.4.1212.jre7] 
A 2020-03-15T04:58:41.951800186Z    at org.postgresql.Driver.makeConnection(Driver.java:404) ~[postgresql-9.4.1212.jre7.jar!/:9.4.1212.jre7] 
A 2020-03-15T04:58:41.951800187Z    at org.postgresql.Driver.connect(Driver.java:272) ~[postgresql-9.4.1212.jre7.jar!/:9.4.1212.jre7] 
A 2020-03-15T04:58:41.951800188Z    at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:310) ~[tomcat-jdbc-8.5.23.jar!/:na] 
A 2020-03-15T04:58:41.951800189Z    at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:203) ~[tomcat-jdbc-8.5.23.jar!/:na] 
A 2020-03-15T04:58:41.951800190Z    at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:735) [tomcat-jdbc-8.5.23.jar!/:na] 
A 2020-03-15T04:58:41.951800191Z    at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:667) [tomcat-jdbc-8.5.23.jar!/:na] 
A 2020-03-15T04:58:41.951800192Z    at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:482) [tomcat-jdbc-8.5.23.jar!/:na] 
A 2020-03-15T04:58:41.951800193Z    at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:154) [tomcat-jdbc-8.5.23.jar!/:na] 
...
A 2020-03-15T04:58:41.951800269Z Caused by: java.net.SocketException: already connected 
A 2020-03-15T04:58:41.951800270Z    at java.net.Socket.connect(Socket.java:569) ~[na:1.8.0_222] 
A 2020-03-15T04:58:41.951800271Z    at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:666) ~[na:1.8.0_222] 
A 2020-03-15T04:58:41.951800272Z    at org.postgresql.core.PGStream.<init>(PGStream.java:61) ~[postgresql-9.4.1212.jre7.jar!/:9.4.1212.jre7] 
A 2020-03-15T04:58:41.951800273Z    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:144) ~[postgresql-9.4.1212.jre7.jar!/:9.4.1212.jre7] 
A 2020-03-15T04:58:41.951800274Z    ... 85 common frames omitted 

我不明白"java.net.SocketException:已经连接“是什么意思

下面是我在application.properties中的配置文件:

代码语言:javascript
复制
spring.datasource.url=${URL}
spring.datasource.username=${USER}
spring.datasource.password=${PASSWORD}
spring.datasource.driverClassName=org.postgresql.
spring.cloud.gcp.sql.enabled=true


spring.cloud.gcp.projectId={projectId}
spring.cloud.gcp.sql.instanceName={projectId}:{region}:{instanceName}
spring.cloud.gcp.sql.jdbcUrl=jdbc:postgresql://google/{dbname}?cloudSqlInstance={projectId}:{region}:{dbname}&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user={user}&password={password}
spring.cloud.gcp.sql.databaseName={DBname}
spring.cloud.gcp.sql.userName={user}
spring.cloud.gcp.sql.password={password}

spring.cloud.gcp.sql.jdbcDriver=org.postgresql.Driver
spring.cloud.gcp.sql.instance-connection-name={projectId}:{region}:{instanceName}
spring.cloud.gcp.sql.database-name={DBname}


spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.properties.hibernate.id.new_generator_mappings = false
spring.jpa.properties.hibernate.format_sql = true
spring.jpa.generate-ddl=true

下面是我的app.yaml配置文件:

代码语言:javascript
复制
runtime: java
env: flex
runtime_config:
  jdk: openjdk8
env_variables:
  SPRING_PROFILES_ACTIVE: "gcp,postgresql"
  URL: "jdbc:postgresql://google/{dbName}?cloudSqlInstance={projectId}:{region}:{instanceName}&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user={user}&password={password}"
  USER: "{user}"
  PASSWORD: "{password}"

beta_settings:
  cloud_sql_instances: "{projectId}:{region}:{instanceName}"

handlers:
  - url: /.*
    script: this field is required, but ignored
manual_scaling:
  instances: 1
resources:
  cpu: 2
  memory_gb: 2.3
  disk_size_gb: 10
  volumes:
    - name: ramdisk1
      volume_type: tmpfs
      size_gb: 0.5

云SQL配置是公共IP。我很想知道我可能做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-15 08:47:06

我认为你应该改变你的网址:

代码语言:javascript
复制
URL:"jdbc:postgresql://google/{dbName}?cloudSqlInstance={projectId}:{region}:{instanceName}&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user={user}&password={password}"

应:

代码语言:javascript
复制
URL:"jdbc:postgresql:///<DATABASE_NAME>?cloudSqlInstance=<INSTANCE_CONNECTION_NAME>&socketFactory=com.google.cloud.sql.mysql.SocketFactory&user=<MYSQL_USER_NAME>&password=<MYSQL_USER_PASSWORD>"

注意: JDBC的主机部分目前未使用,对连接进程没有任何影响。SocketFactory将根据提供的cloudSqlInstance arg获取实例IP地址。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60690383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档