PHP 連線失敗:SQLSTATE 連線被拒絕
P粉068510991
P粉068510991 2023-08-23 18:49:26
0
2
631
<p>我正在嘗試使用 PHP 連線來連接 phpmyadmin 上的 MySQL 資料庫。連結沒什麼特別的,只是想看看連線是否成功。我正在使用 MAMP 託管資料庫,我嘗試使用的連接是這樣的: </p> <pre class="brush:php;toolbar:false;"><?php $servername = "127.0.0.1"; $username = "root"; $password = "root"; try { $conn = new PDO("mysql:host=$servername;dbname=AppDatabase", $username, $password); // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected successfully"; } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); } ?></pre> <p>我一直在使用郵遞員來測試連線是否正常運作,但我不斷收到此錯誤訊息:</p> <blockquote> <p>連線失敗:SQLSTATE[HY000] [2002] 連線被拒絕</p> </blockquote> <p>在我收到以下錯誤訊息之前:</p> <blockquote> <p>連線失敗:SQLSTATE[HY000] [2002] 沒有這樣的檔案或目錄</p> </blockquote> <p>這是因為我將伺服器名稱設為 localhost,透過將其更改為 IP 位址,它導致連線被拒絕,我不知道出了什麼問題。 </p> <p>任何有關此問題的幫助將不勝感激。 </p>
P粉068510991
P粉068510991

全部回覆(2)
P粉434996845

我在docker 環境中度過了相當多的時間,其中我的所有容器都是docker 容器,並且我使用Phinx 進行遷移。只是為了分享不同配置的不同回應。

工作解決方案

#
"host" => "db", // {docker container's name} Worked
"host" => "172.22.112.1", // {some docker IP through ipconfig - may change on every instance - usually something like 172.x.x.x} Worked

無效的解決方案

#
"host" => "127.0.0.1", // SQLSTATE[HY000] [2002] Connection refused
"host" => "docker.host.internal", //  SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name does not resolve
"host" => "localhost", //  SQLSTATE[HY000] [2002] No such file or directory

我按照以下方式運行 Phinx

docker compose --env-file .env run --rm phinx status -e development
P粉186017651

我找到了連接不起作用的原因,這是因為連接試圖連接到連接埠8888,而它需要連接到連接埠8889。

$conn = new PDO("mysql:host=$servername;port=8889;dbname=AppDatabase", $username, $password);

這解決了問題,儘管將伺服器名稱更改為 localhost 仍然會出現錯誤。

連線失敗:SQLSTATE[HY000] [2002] 沒有這樣的檔案或目錄

但是當輸入IP位址作為伺服器名稱時,它會成功連接。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板