使用DB2驱动程序从Flyway命令行获取连接错误

yks3o0rb  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(293)

我们正在将数据库版本从DB2 11.1.3升级到DB2 11.5.6。我们已经使用Flyway迁移代码4年了。我们使用的版本是5.1.3,它运行得很好,只是它抛出了一个警告:DB2 11.5不受支持。
我已经下载并尝试在我们的过程中使用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(类型3)驱动程序和11.5(类型4)驱动程序,但两者都抛出了相同的消息。
有什么办法在不按照IBM建议的方式更新实际Flyway代码的情况下解决这个问题吗?

8oomwypt

8oomwypt1#

看起来Flyway的代码可能需要一些改变。
检查他们的issues页面,如果页面中不存在票证,则打开票证。
否则,目前有可能的解决方法。
在您的特定情况下,附加到URL的属性会触发例外,因此您可以尝试:
(1)更改flyway.url以删除:retrieveMessagesFromServerOnGetMessage=true
(2)如果您的flyway版本中启用了fltway.jdbcProperties(或等效方法),请更改flyway配置以通过fltway.jdbcProperties提供此属性:flyway.jdbcProperties.retrieveMessagesFromServerOnGetMessage=true。请参阅文件https://flywaydb.org/documentation/configuration/parameters/jdbcProperties

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

(4)从URL中删除该属性并在flyway代码得到修复之前缺少有关错误的详细消息。

相关问题