2010-05-07 48 views
1

内存当我添加freetds的耗尽从DBD ::的Sybase

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。

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

回答

3

我看到这个在.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 
+0

固定它;谢谢! – skiphoppy 2010-05-07 17:30:29