【问题标题】:Error creating jtds connection创建 jtds 连接时出错
【发布时间】:2013-07-31 08:51:43
【问题描述】:

使用 jtds 1.2.5 建立连接时出现此错误:“No message resource found for message property prop.sokeepalive”

起初,我使用的是 1.2.2 版本,但我收到此错误消息。 “获取 jdbc 连接时出错:USE 数据库语句失败,因为旧客户端驱动程序无法识别数据库排序规则 Serian_Latin_100_CI_AS。尝试升级客户端操作系统或对数据库客户端软件应用服务更新,或使用不同的排序规则。请参阅 SQL Server在线图书,了解有关更改排序规则的更多信息。”

作为解决方案,我尝试使用 1.2.5 版本得到了开头提到的错误。

我在 jtds 文档中寻找提示,但我无法解决问题。

有什么想法吗?

提前致谢。

【问题讨论】:

    标签: java sql-server locale jtds


    【解决方案1】:

    尝试使用-Duser.language=en -Duser.region=US -Duser.country=US 选项运行客户端JVM。 这将切换到任何地方都支持的美国语言环境。

    也许这个简单的解决方案在您的情况下是可以接受的。 至少,这将揭示问题是否在 jtds 包中缺少当前语言环境的 i18n 消息资源包,正如我猜的那样。

    更新

    尝试仅复制 jtds.jar/net/sourceforge/jtds/jdbc/Messages.properties 并将其添加到类路径或在 jtds.jar 中作为 net/sourceforge/jtds/jdbc/Messages_sr_RS.properties

    一些解释链接:

    Message bundle choosing process

    net.sourceforge.jtds.jdbc.Messages source

    http://www.localeplanet.com/java/sr-RS/

    更新 2

    消息包选择过程无论如何都应该切换到默认提供的资源。 我的第二个猜测是 jtds 包的 Messages.properties 被一些不相关的同名文件所掩盖。 检查你的类路径。

    您应该能够调试 net.sourceforge.jtds.jdbc.Messages 以确定正在发生的事情。

    【讨论】:

    • 嗨 Vadzim,这对我的客户来说不是一个有效的选项。
    【解决方案2】:

    我尝试过其他 jtds 版本。从 1.2.2 到 1.3.1(重新编译为 java 1.6),它们都有相同的错误。

    “获取 jdbc 连接时出错:USE 数据库语句失败,因为旧客户端驱动程序无法识别数据库排序规则Serbian_Latin_100_CI_AS。请尝试升级客户端操作系统或对数据库客户端软件应用服务更新,或使用不同的排序规则。有关更改排序规则的详细信息,请参阅 SQL Server 联机丛书。”

    也许 jdts 不支持这种排序规则。

    【讨论】: