【发布时间】:2015-06-16 16:36:46
【问题描述】:
我使用的是 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>
和
$ 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
【问题讨论】:
-
您在更改这些配置文件后是否重新启动了 Apache(或您正在使用的任何 Web 服务器)?
-
另外,我注意到在您的 odbc.ini 中
Hostname拼写错误(至少您在此处显示的代码) - 您将其显示为Hostnmae。 -
My answer 类似的问题可能会有所帮助。查看
odbcinst.ini配置,在我的odbc.ini文件中,我有一个ServerName参数,但没有Server参数。 -
是的,我尝试重新启动 apache 并没有任何变化,Hostnmae 只是我的输入错误,它们在我的文件中是相同的。我添加了我的 odbcinst.ini
-
如果我将 Server 更改为 ServerName ,tsql amd isql 将无法工作
标签: php sql-server macos pdo freetds