我使用的是 Mac 电脑 OSX 10.9。 Freetds 和 unixODBC 已安装在我的计算机上,并作为扩展添加到 php ,尝试连接到远程 MSSQL 服务器。以下是我的连接测试:
<?php
$dbh = new PDO('dblib:host=Hostname ;dbname=Dbname', 'user', 'pw');
if (!$dbh) {
die('Something went wrong while connecting to MSSQL');
}
?>
错误日志文件显示:
[error] [client 127.0.0.1] PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] Unknown host machine name (severity 2)
可能是什么问题呢 ?如果我使用终端连接到相同的数据库,我的 freetds 和 unixODBC 似乎工作正常,如下所示:
$ isql Hostname user pw
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
and
$ tsql -S Hostname -U user
Password:
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1>
这是我的 freetds.conf
[global]
# TDS protocol version
tds version = 8.0
[Hostname]
host = IP
port = 1433
tds version = 8.0
client charset = UTF-8 ##needed on MAC OS X
dump file = /tmp/freetds.log
和我的 odbc.ini
[Hostname]
#Driver=/usr/local/lib/libtdsodbc.so
Driver = /usr/local/Cellar/freetds/0.91_2/lib/libtdsodbc.so
Trace=No
Server=IP
Port=1433
TDS_Version=8.0
client charset = UTF-8
我的 phpinfo() 显示扩展已添加,PDO 部分中有 dblib,pdo_dblib 部分有驱动程序 Flavor 启用了 freetds。
那么问题出在哪里呢?知道我应该做什么吗?
任何帮助将不胜感激。
这是我的 odbcinst.ini:
[freetdS]
Description = v0.63 with protocol v8.0
Driver = /usr/local/Cellar/freetds/0.91_2/lib/libtdsodbc.so