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

Strange behaviour Laravel Homestead Database Connection

我在使用 Laravel、Homestead 和 MySQL 时遇到一个特殊错误。这是我的 .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 上运行,因此当本地主机相对于您的应用程序端口 3306 工作时。当 运行ning artisan 而不是 SSH 进入你的 vagrant vm 时,你 运行ning 命令相对于你机器的本地主机,而不是 vm,所以你正在尝试 运行 迁移针对没有数据库的机器。

端口 33060 对您的本地计算机有效的原因是因为默认情况下 Homestead 将此端口转发到您的 vagrant 虚拟机端口 3306。但是由于您的 .env 现在指定端口 33060,vagrant 虚拟机现在可以未到达端口 3306。

DB_HOST 设置为 127.0.0.1,端口 3306 和 SSH 通过 vagrant ssh 命令到您的 vagrant 虚拟机到 运行 您的迁移命令。

或者您可以为各种环境设置多个 .env 文件