Laravel Homestead Vagrant Box数据库问题

MCG*_*MCG 3 mysql vagrant laravel

在浏览器中浏览本地网站(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'
)
Run Code Online (Sandbox Code Playgroud)

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

SQLSTATE [HY000] [2003]无法连接到'127.0.0.1'上的MySQL服务器(111)(查看:/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'
)
Run Code Online (Sandbox Code Playgroud)

浏览网站有效但工匠提出此错误:

[PDOException] SQLSTATE [HY000] [2002]没有这样的文件或目录

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

真的很困惑.在我开始使用宅基地和流浪者之前看起来更简单......:/

noe*_*iaz 9

这是我在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会话打开到VM并在那里运行命令,因为在恢复机器后连接它很快.

  • SSH进入VM并运行artisan命令是def.最简单的方法. (5认同)