【发布时间】:2015-10-27 10:08:07
【问题描述】:
我在 CentOS 6 上运行 PHP 5.5,试图通过 PDO 连接到 MS SQL Server 数据库。我已经搜索了大约 20 个对同一错误消息的不同答案,并在 SO 上尝试了其中的每一个。当我尝试从 PDO 连接时,出现以下错误:
SQLSTATE[HY000] 无法连接:Adaptive Server 不可用或不存在(严重性 9)
我可以在命令行上通过 FreeTDS 进行连接,完全没有问题:
TDSVER=7.0 tsql -H 192.168.5.57 -p 1433 -U testuser
我尝试在freetds.conf 中设置tds version = 7.0,但仍然出现同样的错误。
我尝试连接到不同的 MS SQL Server 并且每次都得到相同的结果。我已经在 Rackspace Cloud 服务器上尝试了相同的代码,没有任何问题。因此,PDO/PHP 和 FreeTDS 之间的某些内容似乎没有正确表达,但我不知道如何追踪它。
try {
$hostname = '192.168.5.57:1433';
$dbname = 'Test';
$username = 'testuser';
$password = 'thisismypassword';
$db = new PDO("dblib:host=$hostname;dbname=$dbname","$username","$password");
} catch (PDOException $e) {
echo 'Failed to get DB handle: ' . $e->getMessage();
}
【问题讨论】:
-
天哪。祝你好运 MSSQL 与任何 Linux 连接器/驱动程序接口...我们最终设置了一个 Windows 服务器,以便我们可以使用本机 SQL 驱动程序...然后用 PHP 编写一个 API,以便我们可以从任何应用程序与服务器通信/服务器受 pub/priv 密钥保护。
-
@HalfCrazed 我们让它在 Rackspace 的生产环境中运行良好。我只是想设置一个新的开发环境,但无法让它工作。
-
您的问题解决了吗?我也遇到了同样的问题,这里有几个帖子针对同一个问题,但对我来说没有有效的答案..
-
看这里stackoverflow.com/questions/37205752/…,然后看这里stackoverflow.com/questions/20163776/… - 这对我有帮助。基本上我会考虑将 tds 版本设置为 8.0 以及设置参数并根据需要安装 odbc。但请查看这些链接以获取有关这方面的更多信息。
标签: php sql-server pdo freetds