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扩展