gpt4 book ai didi

postgresql - 针对 9.3 数据库使用 postgresql jdbc 4.2 驱动程序的连接验证错误——SEARCH_PATH 关键字明显区分大小写

转载 作者:行者123 更新时间:2023-11-29 13:50:37 25 4
gpt4 key购买 nike

使用 postgresql-9.4.1212.jar 中包含的 jdbc4.2 实现,在连接到 postgresql 9.3 数据库(java8 和 postgres 都运行在Windows 7的)。

产生错误的路径很复杂但可重现(将很快提供相关代码)并且涉及单个数据库连接上的一系列 sql 调用,其默认模式在每次使用之前通过显式执行 SET 重新配置SEARCH_PATH='[一些架构]'

我发现当且仅当我使用大写字母呈现 SEARCH_PATH 关键字时才会发生错误(也就是说,如果我执行 SET search_path='[some schema ]' - 仅当我执行 SET SEARCH_PATH='[some schema]' 时。

请注意,执行任一变体的直接效果是相同的——在这两种情况下,与连接关联的默认模式都更改为[某些模式]。只是最终,如果我使用 SEARCH_PATH 而不是 search_path,对 java.sql.connection.isValid() 的下游调用会导致数据库崩溃。

我可以看到 jdbc 驱动程序的 java.sql.connection.setSchema() 实现使用了小写变体;这让我觉得这种明显的区分大小写可能是一个已知问题,但我在网上找不到任何提及它的地方。

请注意,如果我:(1) 使用较旧的 jdbc 驱动程序 (postgresql-9.3.1100.jdbc4.1.jar) 和我的 9.3 数据库,或者 (2) 使用最新的 jdbc 驱动程序一个 postgresql 9.6 数据库。

我想知道是否有人遇到过这个特定问题,以及是否还有其他已知的 9.3 数据库和最新的 jdbc 驱动程序不兼容问题。

最佳答案

驱动程序无法使准备好的语句缓存无效,因为它仅在配置参数为小写时检测到 SET search_path=...

参见 this commit 的第 2056 行.

我找不到描述此问题的问题。请自己看一看,如果需要,请举一个。

关于postgresql - 针对 9.3 数据库使用 postgresql jdbc 4.2 驱动程序的连接验证错误——SEARCH_PATH 关键字明显区分大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41749446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com