【问题标题】:FreeTDS runs out of memory from DBD::SybaseFreeTDS 用完 DBD::Sybase 的内存
【发布时间】:2011-02-16 22:23:24
【问题描述】:

当我添加时

client charset = UTF-8

到我的 freetds.conf 文件,我的 DBD::Sybase 程序发出:

Out of memory!

并终止。当我在返回任何 ntext 字段的 SQL 查询语句上调用 execute() 时,就会发生这种情况。我可以很好地返回数字数据、日期时间和 nvarchars,但是只要输出字段之一是 ntext,我就会收到此错误。

如果没有 UTF-8 设置,所有这些查询都可以正常工作,但我确实需要处理一些在默认字符集下引发警告的字符。 (见related question。)

错误消息的格式与其他 DBD::Sybase 错误消息的格式不同。不过,我确实收到一条消息,指出正在发出 rollback()。 (我的错误 AutoCommit 标志受到尊重。)我想我在某处读到 FreeTDS 使用 iconv 程序在字符集之间进行转换;是否有可能从 iconv 发出此消息?

如果我在 tsql(FreeTDS 的命令行 SQL shell)中使用相同的 freetds.conf 设置执行相同的查询,我不会收到错误消息。

我正在连接到 SQL Server。

我需要做什么才能让这些查询成功返回?

【问题讨论】:

    标签: perl dbi freetds


    【解决方案1】:

    这些链接似乎也很相关,并显示了如何在不修改 freetds.conf 文件的情况下更改设置:

    http://lists.ibiblio.org/pipermail/freetds/2002q1/006611.html http://www.freetds.org/faq.html#textdata

    FAQ 特别没有帮助,没有列出实际的错误消息。

    【讨论】:

      【解决方案2】:

      我在 .conf 文件中看到了这个 - 看看它是否有帮助:

      # Command and connection timeouts
      ; timeout = 10
      ; connect timeout = 10
      # If you get out of memory errors, it may mean that your client
      # is trying to allocate a huge buffer for a TEXT field.
      # (Microsoft servers sometimes pretend TEXT columns are
      # 4 GB wide!) If you have this problem, try setting
      # 'text size' to a more reasonable limit
      text size = 64512 
      

      【讨论】:

        猜你喜欢
        • 2016-04-14
        • 2023-03-26
        • 2017-04-01
        • 1970-01-01
        • 2015-07-09
        • 2013-11-18
        • 2011-06-16
        • 2013-05-09
        • 1970-01-01
        相关资源
        最近更新 更多