[英]PDO Error “Adaptive Server is unavailable” when connecting to MS SQL Database
[英]PDO Error "Adaptive Server is unavailable" when connecting to MS SQL Database
我正在嘗試連接到在 Windows 服務器上運行的 SQL 服務器數據庫。 我在 linux 服務器(centos 7)上運行這個 PHP 代碼。
我正在使用以下 pdo 連接字符串連接到數據庫。
$db = new PDO ("dblib:192.168.2.1;dbname=TestDB","username",'pass');
當我運行代碼時,出現以下異常。 帶有消息“SQLSTATE[HY000] 無法連接:Adaptive Server 不可用或不存在(嚴重性 9)”的“PDOException”
我嘗試使用 tsql 測試連接,並且我能夠連接到數據庫而沒有任何錯誤。 以下代碼為我提供了 TestDB 中所有表的列表。 如果我沒有先鍵入使用 TestDB,它就行不通。
tsql -S 192.168.2.1 -U username -P 'pass' -L TestDB
use TestDB
GO
select * FROM sys.Tables
GO
我的 freetds.conf 文件包含以下內容
[Server1]
host = 192.168.2.1
port = 1433
tds version = 8.0
我無法弄清楚如何使用 tsql 進行連接,但在使用 php 連接時無法進行相同的操作。
dblib 驅動肯定已經安裝好了。
print_r(PDO::getAvailableDrivers());
Array ( [0] => dblib [1] => mysql [2] => sqlite )
回答
找到了問題的原因。 原來是SELinux。 以下命令修復了該問題。
setsebool -P httpd_can_network_connect 1
setsebool -P httpd_can_network_connect_db 1
您有數據源名稱,您應該使用它:
$db = new PDO ("dblib:host=Server1;dbname=TestDB","username",'pass');
你在運行 linux 對嗎? 我建議試一試 odbc。
為您檢查三件事。
首先使用您定義的端口嘗試連接。
代替:
$db = new PDO ("dblib:192.168.2.1;dbname=TestDB","username",'pass');
嘗試使用這個:
$db = new PDO("dblib:host=192.168.2.1:1433;dbname=TestDB","username",'pass');
其次,您應該確定您的 SQL Server 是否配置為在端口 1433 上偵聽。您可以使用 SQL Server 配置管理器進行檢查。
您可以檢查的第三件事(如果您在 Windows 上運行它)是我在PHP 文檔中找到的一件事。 在評論中,另一個人提到了同樣的錯誤。 這是似乎有效的答案:
對於 PDO MSSQL 連接問題,請確保您擁有 ntwdblib.dll 的更新版本(截至本文,當前為 8.00.194)。 覆蓋現有(舊)文件或將其放在 Windows system32 文件夾中。 PHP 5.2.X 附帶的版本不起作用。 這顯然是一個眾所周知的問題,但在我能夠鎖定文件名之前,我很難找到有關此問題的信息。 我希望這對某人有所幫助。
如果啟用了 SELinux,另一個可能的問題可能是 SELinux。 我在 Ruby on Rails 安裝中遇到了一些與此相似的錯誤。 您可以通過禁用 SELinux 來嘗試一下,然后再試一次。
使用 PDO 連接時,如果您省略host=
它使用 Unix 域套接字,這可能會導致您的問題。 輸入host=
將通過 TCP/IP 連接到數據庫。
因此,嘗試將您的代碼行更改為:
$db = new PDO ("dblib:host=192.168.2.1;dbname=TestDB","username",'pass');
或者還有端口:
$db = new PDO ("dblib:host=192.168.2.1:1433;dbname=TestDB","username",'pass');
對我來說,問題在於使用 IP 地址。 我將其更改為“MyServerName/SQL2017DEV”並連接
我已經看到了同樣的問題。我非常簡單地解決了這個問題。 打開您的MSSQLsrver 1433端口,然后您可以連接數據庫成功。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.