在db-config中,artisan命令需要与Laravel本身不同的主机名


Artisan-commands need different hostname in db-config than Laravel itself

这是一个奇怪的问题,我从来没有能够解决自从我开始使用Laravel。

当我在db-config中发出像'php artisan migrate'这样的工匠命令时(我通过MAMP使用MySQL),主机行必须是:

'host' => 'localhost:8889',

然而,当在web浏览器中加载页面时,我得到:

SQLSTATE[HY000] [2005] Unknown MySQL server host 'localhost:8889'

当我把它改成:

'host' => 'localhost',

在我运行应用程序的实时服务器上,我没有这个问题。这里出了什么问题?

这很可能发生,因为您刚刚使用Terminal cd进入该目录并从那里运行php artisan migrate命令。您需要使用vagrant ssh ssh到您的迁移盒,然后导航到您的项目文件夹并从那里运行migrate命令。

MySQL服务器在本地运行的端口是什么?默认情况下,MySQL会在:3306上查找服务器,所以你会得到错误,除非有东西为它服务或重定向它

我猜prod服务器在:8889上运行MySQL,而你的本地环境在:3306上运行MySQL

在本地环境中,您可以将端口更改为8889:
http://www.mamp.info/en/documentation/q11

或者转发端口:
http://www.chrisvanpatten.com/port-forwarding-mavericks