PHP/PDO 错误:SQLSTATE[HY000] 无法连接:Adaptive Server 不可用或不存在(严重性 9)
Posted
技术标签:
【中文标题】PHP/PDO 错误:SQLSTATE[HY000] 无法连接:Adaptive Server 不可用或不存在(严重性 9)【英文标题】:PHP/PDO Error: SQLSTATE[HY000] Unable to connect: Adaptive Server is unavailable or does not exist (severity 9) 【发布时间】: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 的生产环境中运行良好。我只是想设置一个新的开发环境,但无法让它工作。 您的问题解决了吗?我也遇到了同样的问题,这里有几个帖子针对同一个问题,但对我来说没有有效的答案.. 看这里***.com/questions/37205752/…,然后看这里***.com/questions/20163776/… - 这对我有帮助。基本上我会考虑将 tds 版本设置为 8.0 以及设置参数并根据需要安装 odbc。但请查看这些链接以获取有关这方面的更多信息。 【参考方案1】:尝试从$hostname
中删除端口并将其添加到freetds.conf。
[192.168.5.57]
host = 192.168.5.57
port = 1433
【讨论】:
【参考方案2】:我们在尝试连接到未经授权的数据库时遇到此错误。一旦我们请求加入白名单(不确定是在防火墙还是数据库级别),我们就可以正常连接了。
检查是否有 IP 地址限制。
【讨论】:
【参考方案3】:根据PHP.net更正你的连接DSN
"sqlsrv:Server=localhost;Database=testdb"
【讨论】:
如果有人在使用 dblib,那么 sqlsrv 驱动程序由于某种原因无法工作,例如在最新的 Debian 9 下。以上是关于PHP/PDO 错误:SQLSTATE[HY000] 无法连接:Adaptive Server 不可用或不存在(严重性 9)的主要内容,如果未能解决你的问题,请参考以下文章
Zend 错误 SQLSTATE[HY000] [1045]
SQLSTATE [HY000]:一般错误:1364 字段“名称”没有默认值
Symfony 2 SQLSTATE [HY000] [2002] 连接被拒绝错误