我在 docker
環(huán)境中度過了相當(dāng)多的時間,其中我的所有容器都是 docker
容器,并且我使用 Phinx
進(jìn)行遷移。只是為了分享不同配置的不同響應(yīng)。
工作解決方案
"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
我找到了連接不起作用的原因,這是因為連接試圖連接到端口8888,而它需要連接到端口8889。
$conn = new PDO("mysql:host=$servername;port=8889;dbname=AppDatabase", $username, $password);
這解決了問題,盡管將服務(wù)器名稱更改為 localhost 仍然會出現(xiàn)錯誤。
連接失?。篠QLSTATE[HY000] [2002] 沒有這樣的文件或目錄
但是當(dāng)輸入IP地址作為服務(wù)器名稱時,它會成功連接。