【问题标题】:Laravel Sail Database Connection Refused ErrorLaravel Sail 数据库连接被拒绝错误
【发布时间】:2021-04-11 01:30:24
【问题描述】:

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

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

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

【问题讨论】:

    标签: php laravel docker


    【解决方案1】:

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

    https://github.com/laravel/sail/blob/7457004969dd62fa727fbc596bb2accccb1409a5/src/SailServiceProvider.php#L31

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

    我将 DB_HOST127.0.0.1 更改为 mysql 并且已修复

    【讨论】:

    • 您好,我也面临同样的问题。 DB_HOST 已经是 mysql。我可以登录到数据库并看到它是空的。当我尝试运行“sail artisan migrate”时,我收到相同的错误消息。知道它可能是什么吗?
    • 这行得通,但是我很好奇“mysql”的意义——它是Laravel在访问dbhost时使用的特殊关键字,还是基于mysql的docker镜像名称..编辑:实际上,它可能是直接从命令行调用mysql?
    • 好答案,这正是我的情况。
    • 我必须如何编写该命令?因为 $sails:install 不起作用
    • 效果很好。我必须 sail down -v 删除存储的 mysql 卷,并使用错误的配置和 sail up -d 重建。之后它就起作用了。
    【解决方案2】:

    将 DB_USERNAME 从 sail 更改为 root 对我有用。我猜sai帆没有所需的权限。

    DB_HOST=mysql
    DB_PORT=3306
    DB_DATABASE=database
    DB_USERNAME=root # changed from sail
    DB_PASSWORD=password
    

    【讨论】:

      【解决方案3】:

      在我的 docker 中创建了第二个sails 项目后,我遇到了同样的问题。它没有(仍然没有)接受sai 用户名或密码,但我可以使用root 进入,这给了我你上面给出的错误。我去了 Desktop Docker 应用程序,单击正在运行的容器,找到 mysql 部分并运行 CLI,键入 mysql 然后运行查询 CREATE DATABASE yourdatabasename; 迁移运行得很好。

      【讨论】:

        【解决方案4】:

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

        ports:
          - 3307:3306
        

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

        DB_PORT=3306 // this is for container port
        FORWARD_DB_PORT=3307 // this is for local port
        

        【讨论】:

          【解决方案5】:

          也许你应该匹配 .env.testing 的环境变量,因为正如 willpercey-gb 所说,sail:install 命令会更新 .env 的环境变量,而不是 .env.testing 的环境变量。

          【讨论】:

            【解决方案6】:

            首先 停止所有使用 brew 的服务,尤其是 MySQL

            brew services stop MySQL
            

            在您的 docker-yaml 文件中:

            laravel.test
               ports:
                 - '70:80'
            mysql:
               ports:
                 - '3456:3306'
            

            现在运行您的风帆工匠迁移命令。

            这应该可以解决您的问题。

            【讨论】:

              猜你喜欢
              • 2021-04-10
              • 2021-05-05
              • 2016-04-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-10-03
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多