【发布时间】:2014-09-13 18:13:13
【问题描述】:
我正在连接到外部 MSSQL 数据库以从 PHP55/osx 导出,但我遇到了奇怪的问题。
代码:
new \PDO("dblib:host={$hostname};dbname={$dbname}", $user, $pass);
抛出:
SQLSTATE[01002] Adaptive Server connection failed (severity 9)
但来自 CLI 的连接工作正常
tsql -S 主机名 -U 用户 -P 通行证 -L 数据库名:
locale is "cs_CZ.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1>
freetds.conf:
[hostname]
host = ipaddress
port = 1433
tds version = 8.0
tsql -C:
Version: freetds v0.91
freetds.conf directory: /usr/local/Cellar/freetds/0.91/etc
MS db-lib source compatibility: no
Sybase binary compatibility: no
Thread safety: yes
iconv library: yes
TDS version: 7.1
iODBC: no
unixodbc: no
SSPI "trusted" logins: no
Kerberos: no
有什么想法吗?我几乎尝试过任何东西,连接到主机名、ip、有和没有端口、连接到实例名称、另一个用户、TDS 版本 7.0、7.1、7.2、8.0,重新安装 php 和 freetds
【问题讨论】:
-
您是否尝试过在连接中不包括
dbname,然后使用mssql_select_db? -
你能试试像 ODBC 这样的驱动吗?我已经用 dblib 显示了奇怪的结果。
-
如上所说,也可能和你的dbname属性有关。
-
我尝试过 ODBC,但我根本无法连接。可能我设置错了。我真的更喜欢 dblib,因为我的抽象(Laravel Eloquent ORM)支持它。即使没有 dbname 我也试过了,但没有帮助
-
我也有同样的问题。并尝试了一切,但没有成功。唯一的区别是当我执行
tsql -C时,我得到TDS version: 5.0。
标签: php sql-server database pdo freetds