mysql - Laravel Homestead Vagrant Box 数据库问题

标签 mysql laravel vagrant

在浏览器中浏览本地网站 (example.app:8000) 和使用 php artisan migrate 时,我无法使用相同的 database.php 设置。

如果我的 database.php 设置是:

'mysql' => array(
   'driver'    => 'mysql',
   'host'      => '127.0.0.1',
   'database'  => 'homestead',
   'username'  => 'homestead',
   'password'  => 'secret',
   'charset'   => 'utf8',
   'collation' => 'utf8_unicode_ci',
   'prefix'    => '',
   'port'      => '33060'
)

工匠的作品,但我在浏览网站时得到了这个:

SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (111) (View: /home/vagrant/Code/playnamics/app/views/hello.blade.php)

如果我的 database.php 设置是:

'mysql' => array(
   'driver'    => 'mysql',
   'host'      => 'localhost',
   'database'  => 'homestead',
   'username'  => 'homestead',
   'password'  => 'secret',
   'charset'   => 'utf8',
   'collation' => 'utf8_unicode_ci',
   'prefix'    => '',
   'port'      => '33060'
)

浏览该站点有效,但工匠给出此错误:

[PDOException] SQLSTATE[HY000] [2002] No such file or directory

基本上,我需要在浏览时将主机设置为 localhost,在使用 artisan 时需要将主机设置为 127.0.0.1。我怎样才能简单地使用同一个主机,这样我就不必每 2 分钟更改一次值?

真的很迷茫。在我开始使用 homestead 和 vagrant 之前看起来更简单......:/

最佳答案

这是我在 Laracasts 论坛上的回答,以防有帮助:

在 VM 内部,sql 端口是 3306。在 VM 外部,主机只有一个转发到 VM 上的 SQL 端口。这就是 33060 指向 3306 的原因。

不幸的是,这就是为什么你不能对两者使用相同的数据库节。

我想到了两个想法:

  1. 将 homestead.rb 文件内主机上的 sql 端口从 33060 更改为 3306。我知道如果您在端口 10000 下选择某些东西,机器会变得挑剔,因此您可能会收到管理员凭据提示(如果它甚至允许您的话)。只要您不在该端口上运行任何东西,它就“应该”工作。

  2. 您可以考虑设置两个 Laravel 环境,用于在 VM 外部工作,一个用于内部。这样,您可以在 VM 上运行 artisan 命令或在主机上运行 artisan 时覆盖 database.php 设置。实际上,您只关心更改端口号,因为所有其他设置都是相同的。您可以保留其他所有内容。

只是一些尝试。我只是让 SSH session 对 VM 保持打开状态并在那里运行命令,因为在恢复机器后连接到它的速度非常快。

关于mysql - Laravel Homestead Vagrant Box 数据库问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24048461/

相关文章:

ubuntu - 带有 Vagrant 的 Ubuntu 14.10 上的 Laravel

ruby - 创建/编辑 Vagrant base box 以预安装 Recipe

php - 在 mysql 中存储动态生成的单选按钮的值

mysql - 安装过程中打开 Edx 错误

javascript - 表单数据未通过 ajax 调用提交

Laravel 护照 - guest token

docker - 中间层局部发展

mysql - 循环并将值插入到mysql中的表中

mysql - 使用javafx和Mysql进行多表更新

php - 我无法在 Linux 上执行 php artisanserve