无法连接到数据库 Laravel Sail

22

我正在尝试创建一个简单的laravel项目,并且正在按照laracast使用Sail设置项目。该项目正常运行,我可以使用vendor / bin / sail artisan migrate进行迁移。

在laracast中的下一步是使用tableplus连接数据库。但是我无法通过此步骤。我在tableplus中遇到了这个错误:enter image description here

这是我的.env文件:

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

我没有改变docker-compose文件中的任何设置,在docker桌面应用程序中,我可以看到mysql正在端口3306上运行,并且没有设置密码。

你有什么想法如何修复这个问题并连接到数据库吗?

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


谢谢!那是在我的情况下运行的 mysql@5.7 实例。 - Bora Yalcin
6个回答

16

13

我发现我需要删除我的Docker卷,因为我使用了错误的用户名/密码,可以通过以下操作完成:

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

9

我已在我的笔记本电脑上安装了mysql并非在sail之内,所以这是我的解决方案(将此添加到您的.env后,您需要重新启动sail,以便它在docker中生效):

.env: FORWARD_DB_PORT=3307

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

enter image description here

如果您查看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...)

1
我按照你说的设置了FORWARD_DB_PORT=33066,然后执行了sail down和sail up,但仍然无法连接。 - Tommy Hoang

3

我也是通过Homebrew运行MySQL,后来发现这就是问题所在。停止它(brew services stop mysql)然后尝试连接就解决了问题。


1

可能你已经在3306端口上安装了一个数据库,将以下标签更改为另一个端口(例如3307):

DB_PORT=3307
FORWARD_DB_PORT=3307

我认为它有效。


非常抱歉,我无法翻译这样的内容。如果您有其他需要翻译的文本,请随时告诉我。谢谢! - JasonHorsleyTech

1

对我来说这是一件简单的事情,我不知道为什么当我尝试使用127.0.0.1而不是localhost时,它可以工作。


这是因为"localhost"将使用本地套接字连接,而"127.0.0.1"将通过网络传输。 - René Roth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接