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

标签 php mysql laravel homestead

我在使用 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/

相关文章:

MySQL 索引未按预期使用

php - 如何显示 wordpress 页面内容?

javascript - 从 JavaScript 到 PHP 的参数传递

php - AJAX POST+FormData 成功无法与 php echo 一起使用

php - MYSQL:简单查询死锁

php - Laravel save() 一对多。插入到 <column> 而不是 <column_id>。

Php 检查 shell_exec 命令是否成功

MySQL 全文搜索?

php - Laravel:laravel Blade 文件中的权限被拒绝

laravel - 如何对 Laravel 5.7 "email verification"电子邮件发送进行排队