【问题标题】:Informix query against en_us.918 database from utf databse connection through DRDA - error code: 4220, SQL state is nullInformix 通过 DRDA 从 utf 数据库连接查询 en_us.918 数据库 - 错误代码:4220,SQL 状态为空
【发布时间】:2014-01-22 18:16:07
【问题描述】:

我们正在通过 DRDA 端口连接到 Unicode 的 Informix 数据库。

我们还有另一个数据库,其语言环境是英语语言环境 (en_us.819)。

我们正在使用与 Unicode 数据库的连接(如 dbname:'informix'.tablename)对英文数据库执行查询。

我们发现当查询尝试检索英语语言环境数据库中的“XIC¢LILY NINETH”值时会发生这种情况。

同样在 ODBC 连接上也能正常工作。

Error code : -4220, SQL State: null 

请提供任何帮助/指针/解决方法!


来自 cmets 的信息

我正在使用两个具有不同数据库区域设置的数据库,比如:

  • Database1 -> en_us.819(英文)
  • Database2 -> en_us.57372 (UTF8)

我正在使用 DB2 通用服务器客户端连接到数据库(表示 DRDA 连接)。

  • 连接到 Database1。 Select * from user
    执行成功。
  • 连接到数据库 2 从 Database1 中选择 *:'Informix'.User
    引发异常并导致数据库崩溃。

【问题讨论】:

  • 对不起,但您的问题对我来说有点困惑,并且缺少重要信息。比如:你的 unicode 数据库的语言环境是什么?客户端使用的语言环境是什么?你能举一个更好的例子这个sql怎么样?如果您直接在 unicode 数据库上连接 sql 是否有效?或者这个测试是否提到了这个 odbc 连接?
  • 嗨@ceinmart,我正在使用具有不同数据库区域设置的两个数据库,例如:Database1-> en_us.189(英文)Database2->en_us.57372(UTF8)我正在使用DB2 common服务器客户端连接到数据库(表示 DRDA 连接):以下是查询和结果: 连接到 Database1。 Select * from user - 执行成功。连接到数据库 2 从数据库 1 中选择 *:'Informix'.User - 引发异常并导致数据库崩溃。如果您需要更多详细信息,请告诉我。谢谢,帕尼
  • 好的,现在您提到了非常重要的事情:“使数据库崩溃”。这肯定是一个错误/缺陷,如果你有积极的支持应该打开一个 PMR(检查这个关于 IBM Support 的问题,这是一个类似的情况:stackoverflow.com/q/21047333/469192
  • @ceinmart,谢谢。我们这样做了,并在服务器上应用了补丁。现在没有使用相同查询的崩溃。但是具有特殊字符(例如“¢”)的字段会给出空结果。请问有什么想法吗?
  • 我们发现是Java库(JCC)报错。当我们尝试使用 C# 程序时,'¢' 字符转换为 '?'字符和其余字符正确出现。即使现在我们也遇到了一些错误,一旦我们得到关于它们的具体细节,我会继续发布。谢谢@ceinmart。

标签: utf-8 informix remote-access


【解决方案1】:

似乎在使用 DRDO 连接(通过 DB2 数据服务器客户端)连接到 Informix DB 时,它没有检查任何未为数据库配置的特殊字符。但是,如果您使用 Informix 驱动程序,如果查询包含很少的特殊字符(如“小引号”、“¢”等),这将不允许您执行查询。

我们已经在数据库服务上安装了新的补丁,它解决了这个问题。

谢谢!

【讨论】:

    猜你喜欢
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多