1

当我添加

client charset = UTF-8

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

Out of memory!

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

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

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

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

我正在连接到 SQL Server。

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

4

2 回答 2

4

我在 .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 
于 2010-05-07T17:21:47.233 回答
0

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

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

常见问题解答特别无用,没有列出实际的错误消息。

于 2010-05-07T17:36:25.537 回答