若依druid配置多数据源

若依druid配置多数据源,主库MySQL,丛库pgsql,调用pgsql报错

PSQLException: Properties for the driver contains a non-string value for the key loginTimeout

【相关推荐】



  • 关于该问题,我找了一篇非常好的博客,你可以看看是否有帮助,链接:Druid连接Mysql数据库
  • 除此之外, 这篇博客: druid与mysql连接超时的问题中的 背景 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    公司一个项目使用了druid连接池,mysql数据库,生产环境日志偶尔会打印一个错误如下:

    com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure。

    查了下,错误挺常见,出现这个错误的原因:

    1.网络错误,导致数据库无法连接。

    2.数据库连接闲置时间太长,导致数据库关闭了连接,而连接池还持有这个连接的引用,所以导致使用这个连接的时候出现了异常。

    针对第二个问题,具体分析一下。

    在我们的程序中,对数据库发起创建连接的请求,连接由数据库创建,而我们持有的是连接的引用;当使用连接池时,连接池会初始化一批连接,但是当我们的程序空闲时间太长时,数据库会主动根据设置的超时时间(mysql默认连接超时时间为8小时)断开连接,但是这个操作连接池并不知道,所以这个时候就需要连接池有一个心跳机制去检测连接池中的连接是否有效,在druid中,可以通过设置testWhileIdle=true(默认为true)来开启。

    ps:使用druid的时候推荐使用1.1.5版本及以上,因为1.1.5版本修复了一个重大的bug:testWhileIdle在某些情况下会失效。

    在mysql中查看超时时间的命令为:    show global variables like '%timeout%'
    修改mysql超时时间语句为:   set global wait_timeout=10000


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^