我在使用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,我可以从应用程序访问表,但不能从终端执行命令,如phpaisan migrate。如果将端口设置为33060,则可以从终端执行命令,但无法从应用程序访问表。

最佳答案

您的应用程序在Homestead.yaml中提供的IP上运行,因此当本地主机与您的应用程序端口3306相对应时可以工作。当运行Artisan而不是ssh到您的流氓虚拟机时,您运行的是相对于您的机器的本地主机的命令,而不是虚拟机的命令,因此您试图在没有数据库的机器上运行迁移。
端口33060适用于本地计算机的原因是,默认情况下,homestead将此端口转发到您的虚拟机端口3306。但是,由于您现在指定端口33060,所以vagrant虚拟机现在无法到达端口3306。
将端口3306的.env设置为DB_HOST并通过127.0.0.1命令ssh进入您的vagrant vm,以运行迁移命令。
或者,您可以为您的各种环境拥有多个vagrant ssh文件

关于php - 奇怪的行为Laravel Homestead数据库连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41321121/

10-13 08:03