【问题标题】:FreeTDS and nvarchar(max) dataFreeTDS 和 nvarchar(max) 数据
【发布时间】:2011-10-24 17:06:08
【问题描述】:

我使用 php 应用程序来管理 Microsoft SQL Server 数据库。该应用程序安装到 unix 并使用 FreeTDS。虽然读取/写入 nvarchar(n) 数据没有任何问题,但我无法正确处理 UTF-8 的 nvarchar(max) 数据。

freetds 的配置文件:

    host = x
    port = 1433
    tds version = 7.0
    client charset = UTF-8

为了处理正确的 nvarchar(max) 数据,freetds 是否还有其他选项?

谢谢!

【问题讨论】:

  • 实际的错误信息是什么?建议编辑您的问题以包含此内容。哪个版本的 freetds?
  • 它是否处理 varchar(max)? FreeTDS 文档甚至解决了“最大”长度的字符串吗?它可能不支持。

标签: php sql-server freetds


【解决方案1】:

您需要 TDS 7.2,它增加了对 SQL Server 2005 和 MAX 类型的支持,请参阅Choosing a TDS protocol version

TDS:7.2 包括对 varchar(max)、varbinary(max)、xml 数据类型和 MARS[a] 的支持。

【讨论】:

  • 我尝试了 tds version = 7.2,但没有成功(使用 freetds 的 0.82 版)。另一个问题与 freetds 日志记录有关,因此我无法报告任何错误日志。无论如何,我想知道是否其他人也有同样的问题。
  • 你能提供一些更具体的细节cannot handle correctly nvarchar(max) data for UTF-8是什么意思吗?
  • 是的。例如,当尝试添加一些希腊文本时,即 INSERT INTO TABLE_NAME VALUES (N'αβγ'),应用程序将垃圾字符存储到数据库中 (aß?)。
  • 问题已解决。读取数据时我的代码存在错误。感谢您的宝贵时间!
猜你喜欢
  • 2016-08-10
  • 2018-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-09
相关资源
最近更新 更多