【发布时间】:2015-06-01 01:34:28
【问题描述】:
我最初在 Laravel 4.2 中开发我的应用程序,但后来决定将其移至 5.0 版本,以便它涵盖 5.0 超过 4.2 的更多变化和优势。
我正在尝试运行我的迁移,但是我收到了错误:
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
我对此进行了调查并注意到它是如何发生的,因为我正在为我的服务器而不是 vagrant 和 homestead 运行 MAMP。我并没有反对这两者的用途,但在这一点上,我对 MAMP 感到更舒服,直到它失败了。我之所以知道它的 MAMP 是因为需要声明要使用的 unix 套接字值。
现在在我的应用程序的 4.2 版本中,我有以下内容:
'mysql' => array(
'driver' => 'mysql',
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
'host' => getenv('DB_HOST'),
...
),
在我的 Laravel 5.0 版本中,我将 .env 文件用于我的环境变量,但不确定我需要如何执行此操作,以便它知道使用 unix 套接字值。
有人能告诉我我应该如何将它应用到新版本中,或者以更好的方式将它添加到设置中,这样我就不必这样做了吗?
【问题讨论】:
-
你确定 unix 套接字在这个位置吗?您是否在非默认位置安装了 MAMP?
-
是的,我知道这是正确的。
-
对什么?我敢说你的电脑上指定的地方没有名为
mysql.sock的文件。计算机不会在这方面犯错。如果它说那里没有文件,那是因为那里没有文件。如果您将 MAMP 安装在非默认位置,则可以通过使用mysql.sock文件的良好路径更新配置来解决您的问题,但 MAMP 本身不建议将其软件安装在其他位置,因为诸如此类的许多问题一个会出现的。 -
我知道unix的路径是正确的。
-
好的。对不起,我真的不想让我们竞争。我想告诉你的是,返回
No such file or directory的异常是没有出错,给我们留下了两个选择,要么文件不在你写的地方,要么函数附加了一些东西到路径,弄错了。但是,请,please,PLEASE 别再相信计算机出错了。它正在寻找的文件不在它所在的位置,句号。没有别的了。找到函数试图包含的确切路径,并将其发布在此处。
标签: php laravel laravel-5 mamp-pro unix-socket