P粉4349968452023-08-24 10:47:03
我在 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粉1860176512023-08-24 10:10:42
我找到了连接不起作用的原因,这是因为连接试图连接到端口8888,而它需要连接到端口8889。
$conn = new PDO("mysql:host=$servername;port=8889;dbname=AppDatabase", $username, $password);
这解决了问题,尽管将服务器名称更改为 localhost 仍然会出现错误。
连接失败:SQLSTATE[HY000] [2002] 没有这样的文件或目录
但是当输入IP地址作为服务器名称时,它会成功连接。