PHP-Verbindung fehlgeschlagen: SQLSTATE-Verbindung abgelehnt
P粉068510991
P粉068510991 2023-08-23 18:49:26
0
2
472
<p>Ich versuche, über eine PHP-Verbindung eine Verbindung zu einer MySQL-Datenbank auf phpmyadmin herzustellen. An der Verbindung ist nichts Besonderes, ich wollte nur sehen, ob die Verbindung erfolgreich war. Ich verwende MAMP zum Hosten der Datenbank und die Verbindung, die ich verwenden möchte, ist diese: </p> <pre class="brush:php;toolbar:false;"><?php $servername = "127.0.0.1"; $username = "root"; $password = "root"; versuchen { $conn = new PDO("mysql:host=$servername;dbname=AppDatabase", $username, $password); // Den PDO-Fehlermodus auf Ausnahme setzen $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo „Erfolgreich verbunden“; } Catch(PDOException $e) { echo „Verbindung fehlgeschlagen:“ $e->getMessage(); } ?></pre> <p>Ich habe Postman verwendet, um zu testen, ob die Verbindung funktioniert, aber ich erhalte ständig diese Fehlermeldung: </p> <blockquote> <p>Verbindung fehlgeschlagen: SQLSTATE[HY000] [2002] Verbindung abgelehnt</p> </blockquote> <p>Bevor ich die folgende Fehlermeldung erhielt: </p> <blockquote> <p>Verbindung fehlgeschlagen: SQLSTATE[HY000] [2002] Keine solche Datei oder kein solches Verzeichnis</p> </blockquote> <p>Das liegt daran, dass ich den Servernamen auf „localhost“ gesetzt habe und durch die Änderung in die IP-Adresse die Verbindung abgelehnt wird und ich nicht weiß, was falsch läuft. </p> <p>Jede Hilfe zu diesem Problem wäre sehr dankbar. </p>
P粉068510991
P粉068510991

Antworte allen(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地址作为服务器名称时,它会成功连接。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!