PDO dblib 无法将 ip 地址作为“主机”参数连接

Posted

技术标签:

【中文标题】PDO dblib 无法将 ip 地址作为“主机”参数连接【英文标题】:PDO dblib cannot connect with ip address as "host" parameter 【发布时间】:2014-11-11 05:00:49 【问题描述】:

我正在尝试使用服务器的 IP 作为 DSN 中的主机,通过 dblib 连接到 mssql db。

使用 tsql,这没有任何问题

$ tsql -S 192.168.56.101 -U .\user -P 用户

但在 php 中这是行不通的。

$pdo = new PDO("dblib:host=192.168.56.101,1433;dbname=OtherC", '.\user', 'user');

我得到的错误是: 错误:SQLSTATE[01002] Adaptive Server 连接失败(严重性 9)

【问题讨论】:

我一直在与这个问题作斗争。我也不知道发生了什么。 【参考方案1】:

检查这些:

    端口分隔符在 windows 上是“,”,在 linux/Mac 上是“:” 我从来没有看到用户名是 '.\user' 而是 'user' 在您的磁盘上找到 freetds.conf。它可能存在于多个地方,tsql 使用一个,而 PHP 使用另一个。最好的方法是将它们符号链接到一个通用文件中并对其进行测试。请注意,该文件的常见位置是 /etc/ 或 /usr/local/etc/ 旁边的 ~/.freetds.conf

    您的 freetds.conf 文件中应该有一个 [global] 部分。把这些行放在那里:

    tds 版本 = 8.0

    文字大小 = 20971520

    客户端字符集 = UTF-8

【讨论】:

以上是关于PDO dblib 无法将 ip 地址作为“主机”参数连接的主要内容,如果未能解决你的问题,请参考以下文章

LinUX系统ThinkPHP5链接MsSQL数据库的pdo_dblib扩展

PDO dblib nextRowset 不工作

配置 pdo_dblib - freetds 已经安装

MAMP Pro 和 PDO-dblib

使用 PDO_DBLIB 连接到 MS SQL 数据库的 PHP 错误

centos 6.x 上的 pdo dblib