首页 > 解决方案 > 使用 DB2 驱动程序从 Flyway 命令行获取连接错误

问题描述

我们正在将数据库版本从 DB2 11.1.3 升级到 DB2 11.5.6。我们使用 Flyway 迁移代码已有 4 年了。我们使用的版本是 5.1.3,它运行良好,除了它抛出一个警告 DB2 11.5 is not supported。

我已经下载并尝试在我们的过程中使用 Flyway 7.13.0 和 7.15.0 但它们都抛出以下错误

ERROR: Unable to obtain connection from database (jdbc:db2://VAN-FCALLANDER:50000/TMLCLCUR:retrieveMessagesFromServerOnGetMessage=true;) for user 'TMWIN': [jcc][10214][10050][4.29.24] java.util.Properties object passed to java.sql.Driver.connect() cannot be overridden by URL: jdbc:db2://VAN-FCALLANDER:50000/TMLCLCUR:retrieveMessagesFromServerOnGetMessage=true;. ERRORCODE=-4461, SQLSTATE=42815
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL State  : 42815
Error Code : -4461
Message    : [jcc][10214][10050][4.29.24] java.util.Properties object passed to java.sql.Driver.connect() cannot be overridden by URL: jdbc:db2://VAN-FCALLANDER:50000/TMLCLCUR:retrieveMessagesFromServerOnGetMessage=true;. ERRORCODE=-4461, SQLSTATE=42815


Caused by: com.ibm.db2.jcc.am.SqlSyntaxErrorException: [jcc][10214][10050][4.29.24] java.util.Properties object passed to java.sql.Driver.connect() cannot be overridden by URL: jdbc:db2://VAN-FCALLANDER:50000/TMLCLCUR:retrieveMessagesFromServerOnGetMessage=true;. ERRORCODE=-4461, SQLSTATE=42815

根据 IBM 的说法,返回的错误来自 Flyway 设置参数的方式。 https://www.ibm.com/docs/en/db2/11.5?topic=errors-errorcode-4461 我已经尝试使用 11.1 (type3) 驱动程序和 11.5 (type4) 驱动程序并且两者都抛出相同的消息.

知道如何在不按照 IBM 建议的方式更新实际 Flyway 代码的情况下解决这个问题吗?

标签: javajdbcdb2flyway

解决方案


看起来 Flyway 代码可能需要一些更改。

检查他们的问题页面,如果那里不存在票证,请打开票证。

否则,目前有可能的解决方法。

在您的特定情况下,附加到 URL 的属性会触发异常,因此您可以尝试:

(1) 更改flyway.url 去掉:retrieveMessagesFromServerOnGetMessage=true

(2) 更改 flyway 配置以通过fltway.jdbcProperties(或等效方法)提供此属性,如果在您的 flyway 版本中启用:flyway.jdbcProperties.retrieveMessagesFromServerOnGetMessage=true. 请参阅文档 https://flywaydb.org/documentation/configuration/parameters/jdbcProperties

或者

(3) 通过 IBM 外部配置您需要的连接属性db2dsdriver.cfg。有关详细信息,请参阅 IBM Db2 文档。这个想法是您可以将所有(或部分)数据源名称详细信息和参数放入 XML 文件 ( db2dsdriver.cfg) 中,Db2 驱动程序将在运行时对其进行解析以执行您的指令。

或者

(4) 从 URL 中删除该属性,并且在修复 flyway 代码之前没有详细的错误消息。


推荐阅读