【问题标题】:Using a remote database as spring boot datasource使用远程数据库作为 Spring Boot 数据源
【发布时间】:2019-09-07 03:54:39
【问题描述】:

我正在尝试将 Spring Boot 数据源配置为远程 IBM DB2 数据库。我在application.properties 文件中添加了以下配置:

spring.jpa.hibernate.ddl-auto=none
spring.datasource.url=jdbc:db2://<dbhost>:<dbport>/<db>
spring.datasource.username=<username>
spring.datasource.password=<password>

我什至在 application.yml 中添加了相同的属性:

spring:
  datasource:
    url: jdbc:db2://dashdb-txn-sbox.services.eu-gb.bluemix.net:3000/BLUDB:sslConnection=true;
  username: <username>
  password: <password>
  driverClassName: com.ibm.db2.jcc.DB2Driver
 jpa:
   properties:
     hibernate:
       dialect: org.hibernate.dialect.DB2Dialect

但是,我仍然收到此错误:

A communication error occurred during operations on the connection's underlying socket, socket input stream, or socket output stream. Error location: Reply.fill() - socketInputStream.read (-1). Message: Read timed out. ERRORCODE=-4499, SQLSTATE=08001

【问题讨论】:

    标签: database spring spring-boot spring-data-jpa db2


    【解决方案1】:

    这个问题更多的是关于配置而不是编程。

    看到这个FAQ for JDBC ERRORCODE -4499

    其中提到:

    (A.5) 消息:读取超时

    当客户端等待来自客户端的回复时返回此消息 服务器和服务器没有及时回复。可能是客户端造成的 暂停。确保 JDBC 驱动程序属性中没有设置超时:

    blockingReadConnectionTimeout=0 (default)
    commandTimeout=0 (default)
    loginTimeout = 0 (default)
    

    也可能是由服务器或网络问题引起的。

    如果问题持续存在,请确保您使用的是最新 jdbc Db2 驱动程序(目前为 4.26.14 或更高版本)。

    您可以使用 jdbc 跟踪(按照 IBM Db2 文档中的说明启用 jdbc 跟踪)深入了解到底发生了什么。

    确保远程 Db2 服务器有足够的计算资源及时响应。如果 jdbc 跟踪表明存在不受您直接控制的服务器端问题,您可能需要向您的云供应商 (IBM) 开票。

    【讨论】:

      【解决方案2】:

      50001 是 ssl 连接的常用(默认)端口号,而不是您问题中的 3000

      【讨论】:

        猜你喜欢
        • 2018-09-11
        • 2018-08-18
        • 2018-11-23
        • 2018-07-20
        • 2019-03-22
        • 2018-11-29
        • 2021-08-07
        • 1970-01-01
        相关资源
        最近更新 更多