我在使用 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 上运行,因此当 localhost 与您的应用程序相关时,端口 3306 可以工作。当运行 artisan 而不是通过 SSH 进入你的 vagrant 虚拟机时,你正在运行相对于你机器本地主机的命令,而不是虚拟机,所以你正在尝试对没有数据库的机器运行迁移。
端口 33060 对您的本地计算机有效的原因是因为 Homestead 默认情况下将此端口转发到您的 vagrant 虚拟机端口 3306。但是由于您的 .env
现在指定端口 33060 vagrant 虚拟机现在无法到达端口 3306。
将 DB_HOST
设置为 127.0.0.1
并使用端口 3306 和 SSH 通过 vagrant ssh
命令进入您的 vagrant 虚拟机以运行您的迁移命令。
或者,您可以为各种环境设置多个 .env
文件
关于php - 奇怪的行为 Laravel Homestead 数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41321121/