【问题标题】:Can't connect to database Laravel Sail无法连接到数据库 Laravel Sail
【发布时间】:2021-04-21 23:03:52
【问题描述】:

我正在尝试创建一个简单的 laravel 项目,并且我正在关注 laracast 以使用 Sail 设置项目。该项目运行良好,我能够使用 vendor/bin/sail artisan migrate 进行迁移。

laracast 的下一步是使用 tableplus 连接数据库。但我无法通过这一步。我在 tableplus 中收到此错误:

这是我的 .env:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=csv
DB_USERNAME=root
DB_PASSWORD=

我没有更改 docker-compose 文件中的任何设置,在 docker desktop 中我可以看到 mysql 在端口 3306 上运行并且没有设置密码。

知道如何解决这个问题并连接到数据库吗?

编辑:发现问题。当我运行brew services list 时,看到旧版本的mysql 仍在运行。用brew services stop mysql 停止了它,现在我可以连接了

【问题讨论】:

  • 谢谢!那是在我的机箱上运行的 mysql@5.7 实例

标签: mysql laravel laravel-8 laravel-sail


【解决方案1】:

你应该定义

FORWARD_DB_PORT=3306

在您的 .env 中,这将在该端口上公开 mysql 以进行开发连接。我建议不要在生产环境中公开这个端口。

https://github.com/laravel/sail/blob/e3d601598e735407070dd50e09ab6e0c68ab32ae/stubs/mysql.stub#L4

【讨论】:

    【解决方案2】:

    我在 Sai 之外的笔记本电脑上安装了 mysql,所以这对我有用(将其添加到 .env 后,您需要重新启动 Sai 才能在 docker 中生效):

    .env: FORWARD_DB_PORT=3307

    对于 TablePlus,您真的只需要名称、主机、修改后的端口和用户/密码(sail 默认为 root,没有密码)。输入与 .env:DB_DATABASE= 相同的数据库名称

    如果您查看您的 docker-compose.yml,您会看到默认设置为 3306,这会覆盖它(您无需在此处执行任何操作,仅供参考):

    mysql:
        image: 'mysql:8.0'
        ports:
            - '${FORWARD_DB_PORT:-3306}:3306'
        environment:
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_DATABASE: '${DB_DATABASE}'
        (...etc...)
    

    【讨论】:

      【解决方案3】:

      我发现我必须删除我的 docker 卷,因为我的用户名/密码错误, 可以这样做:

      1. 使用sail down -v 删除卷
      2. 然后使用sail up -d 再次备份
      3. 使用sail artisan config:cache 重新缓存 .env 变量
      4. 然后使用sail artisan migrate 重新迁移数据库

      【讨论】:

        猜你喜欢
        • 2021-06-11
        • 2021-04-11
        • 2013-12-18
        • 2017-11-21
        • 2014-07-28
        • 2017-01-27
        • 1970-01-01
        • 2021-07-31
        • 2021-10-14
        相关资源
        最近更新 更多