Laravel Sail 数据库连接拒绝错误

Rut*_*kar 8 php laravel docker

我在laravel 8中创建了一个新的laravel项目。我已经正确设置了Sail安装,本地数据库连接一切正常,但是当我尝试使用sail连接我的数据库时,它给了我一个错误

SQLSTATE[HY000] [2002] 连接被拒绝(SQL: select * from information_schema.tables where table_schema = laravel8 and table_name = migrations and table_type = 'BASE TABLE')

我已经清除了我的配置和缓存文件。

小智 26

在cmd上运行这个命令

docker network inspect bridge
Run Code Online (Sandbox Code Playgroud)

您将得到类似(类似)的响应:

[
{
    "Name": "bridge",
    "Id": "695c284c7b184839edf97d48161922dfe6c4827d0db917c3278f5634af7e00e2",
    "Created": "2022-02-22T22:17:30.8583513Z",
    "Scope": "local",
    "Driver": "bridge",
    "EnableIPv6": false,
    "IPAM": {
        "Driver": "default",
        "Options": null,
        "Config": [
            {
                "Subnet": "172.17.0.0/16",
                "Gateway": "172.17.0.1"
            }
        ]
    },
    .....
}
Run Code Online (Sandbox Code Playgroud)

]

复制“ Gateway” IP 地址并替换为文件DB_HOST中的值.env。会起作用的


小智 22

我正在研究同样的问题并发现了这一点。

https://github.com/laravel/sail/blob/1.x/src/SailServiceProvider.php#L31

代码显示了由 laravel 帆添加的 artisan 命令 -sail:install它用服务名称覆盖您的 .env 文件主机变量。

DB_HOST127.0.0.1改为mysql并已修复

  • 太棒了,有效。我必须使用错误的配置使用 `sail down -v` 删除存储的 mysql 卷,并使用 `sail up -d` 进行重建。之后就成功了。 (6认同)
  • 你好,我面临着同样的问题。DB_HOST已经是mysql。我可以登录数据库并看到它是空的。当我尝试运行“sail artisan migrate”时,我收到相同的错误消息。知道它可能是什么吗? (4认同)
  • 我正在使用 mariadb,所以我需要在 .env 文件中添加 `DB_HOST=mariadb` 并在 docker-compose.yml 中添加 `container_name: mariadb` 。 (2认同)

小智 15

如果你想在不同的端口运行 mysql,例如 3307,如下所示

ports:
  - 3307:3306
Run Code Online (Sandbox Code Playgroud)

您应该像这样将 FORWARD_DB_PORT 环境变量添加到 .env 文件中

DB_PORT=3306 // this is for container port
FORWARD_DB_PORT=3307 // this is for local port
Run Code Online (Sandbox Code Playgroud)