11

我正在尝试创建一个简单的 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现在我可以连接

4

3 回答 3

9

你应该定义

FORWARD_DB_PORT=3306

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

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

于 2021-01-22T10:58:19.530 回答
2

我发现我必须删除我的 docker 卷,因为我的用户名/密码错误,可以通过以下方式完成:

  1. 删除卷sail down -v
  2. 然后再次备份sail up -d
  3. 重新缓存 .env 变量sail artisan config:cache
  4. 然后重新迁移数据库sail artisan migrate
于 2021-12-23T16:49:53.230 回答
1

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

.env: FORWARD_DB_PORT=3307

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

在此处输入图像描述

如果你查看你的docker-compose.yml,你会看到默认设置为 3306 并且这会覆盖它(你不需要在这里做任何事情,只是一个 FYI):

mysql:
    image: 'mysql:8.0'
    ports:
        - '${FORWARD_DB_PORT:-3306}:3306'
    environment:
        MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
        MYSQL_DATABASE: '${DB_DATABASE}'
    (...etc...)
于 2021-09-27T02:54:56.463 回答