当我添加
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。
我需要做什么才能让这些查询成功返回?