java - 使用 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 代码的情况下解决这个问题吗?
解决方案
看起来 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 代码之前没有详细的错误消息。
推荐阅读
- maven - 了解 GUI - 依赖关系 - 与 Eclipse 中的 pom.xml 相关
- c# - 发生异常索引超出数组范围
- lua - 如何检查Lua中是否存在表子字段?
- python - 在 Python 中找到访问地理坐标的最有效路径
- c# - 需要从json中提取一些值
- python - 无法更改 Django 中的模型字段类型
- node.js - 2 个文档通过 Testroute 持续存在
- css - materializecss 搜索栏在 chrome 中无法正常工作
- javascript - 默认情况下,Javascript `fetch` 是否遵循重定向?
- r - 如何控制 mapview 包中的特定地图和图例颜色?