Symfony 5:为什么会出现此错误? SQLSTATE[HY000] [2002] 连接被拒绝

Symfony 5: Why am I getting this error? SQLSTATE[HY000] [2002] Connection refused

我收到这个错误:

An exception occurred in driver: SQLSTATE[HY000] [2002] Connection refused

我曾尝试将 .env 中的 IP 地址更改为 localhost,但随后出现 not found 错误。

我还尝试更改我的 .env 数据库主机以匹配我的 docker 撰写文件:

DB_HOST=mysql

docker作曲家文件:

version: "3.7"
  services:
    app:
    image: kooldev/php:7.4-nginx
    ports:
      - ${KOOL_APP_PORT:-80}:80
  environment:
    ASUSER: ${KOOL_ASUSER:-0}
    UID: ${UID:-0}
  volumes:
    - .:/app:delegated
  networks:
    - kool_local
    - kool_global
  database:
    image: mysql:8.0
    command: --default-authentication-plugin=mysql_native_password
  ports:
    - ${KOOL_DATABASE_PORT:-3306}:3306

我使用 kool.dev 进行了 Symfony 安装,看起来不错,数据库似乎按预期工作:

user@DESKTOP-QSCSABV:/mnt/c/dev/symfony-project$ kool status
+----------+---------+------------------------------------------------------+-------------------------+
| SERVICE  | RUNNING | PORTS                                                
| STATE                   |
+----------+---------+------------------------------------------------------+-------------------------+
| app      | Running | 0.0.0.0:80->80/tcp, :::80->80/tcp, 9000/tcp          
| Up 15 minutes           |
| database | Running | 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 
33060/tcp | Up 15 minutes (healthy) |
+----------+---------+------------------------------------------------------+-------------------------+

[完成] 获取服务状态 g

在我的 .env 文件中:

DB_USERNAME=myusername
DB_PASSWORD=mypassword
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=mydatabase
DB_VERSION=8.0
DATABASE_URL="mysql://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_DATABASE}?serverVersion=${DB_VERSION}"

关于如何解决这个问题有什么建议吗?

DB_HOST=127.0.0.1

在你的环境文件中应该是

DB_HOST=database

127.0.0.1 是容器本身的地址,因此在您的情况下,应用程序容器会尝试与自身建立连接。 Docker compose 创建一个虚拟网络,其中每个容器都可以通过其服务名称寻址。因此,在您的情况下,您想连接到 database 服务。