2010-05-07 45 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