Php 奇怪的行为Laravel Homestead数据库连接

Php 奇怪的行为Laravel Homestead数据库连接,php,mysql,laravel,homestead,Php,Mysql,Laravel,Homestead,我在使用Laravel、Homestead和MySQL时遇到了一个特殊的错误。这是my.env文件中与数据库相关的部分: DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=33060 DB_DATABASE=mydatabasename DB_USERNAME=homestead DB_PASSWORD=secret 如果我将端口设置为3306,我可以从我的应用程序中访问这些表,但我无法从终端(如php artisan migrate)执行命令。如果我

我在使用Laravel、Homestead和MySQL时遇到了一个特殊的错误。这是my.env文件中与数据库相关的部分:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=33060
DB_DATABASE=mydatabasename
DB_USERNAME=homestead
DB_PASSWORD=secret

如果我将端口设置为3306,我可以从我的应用程序中访问这些表,但我无法从终端(如php artisan migrate)执行命令。如果我将端口设置为33060,我可以从终端执行命令,但我无法从我的应用程序访问表。

您的应用程序正在Homestead.yaml中提供的IP上运行,因此当localhost与您的应用程序端口3306相对时,它可以工作。当运行artisan而不是SSH到您的vagrant vm时,您运行的是相对于您机器的本地主机(而不是vm)的命令,因此您试图在没有数据库的机器上运行迁移

端口33060适用于本地机器的原因是Homestead默认情况下会将此端口转发到您的流浪虚拟机端口3306。但是由于您的
.env
现在指定了端口33060,流浪虚拟机现在无法到达端口3306

DB\u主机设置为
127.0.0.1
,通过
vagrant SSH
命令将端口3306和SSH保留到您的vagrant vm中,以运行迁移命令


或者,您可以为您的各种环境提供多个
.env
文件

谢谢您的回答和良好的解释。一旦我用ssh连接到我的流浪汉,我应该如何运行php artisan migrate?@DiegoVidal导航到artisan所在的目录,并正常运行命令