我相信我已经成功地部署了我的(非常基本的)网站到fortrabbit,但只要我连接到SSH运行一些命令(如php artisan migrate或php artisan db:seed),我得到一个错误消息:
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
在某种程度上,迁移一定是有效的,因为我的表在那里——但这并不能解释为什么它现在不适合我。
我相信我已经成功地部署了我的(非常基本的)网站到fortrabbit,但只要我连接到SSH运行一些命令(如php artisan migrate或php artisan db:seed),我得到一个错误消息:
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
在某种程度上,迁移一定是有效的,因为我的表在那里——但这并不能解释为什么它现在不适合我。
当前回答
在我的情况下,我不得不删除引导/缓存文件夹,然后再试一次。
我的场景是在服务器迁移之后。
其他回答
我在ubuntu 18.04的nginx中遇到了同样的问题。通过以下步骤,我的问题已经解决:
首先打开终端,进入mysql CLI。要检查mysql套接字的位置,我写下面的命令。
mysql> show variables like '%sock%'
我得到了如下内容:
+-----------------------------------------+-----------------------------+
| Variable_name | Value |
+-----------------------------------------+-----------------------------+
| mysqlx_socket | /var/run/mysqld/mysqlx.sock |
| performance_schema_max_socket_classes | 10 |
| performance_schema_max_socket_instances | -1 |
| socket | /var/run/mysqld/mysqld.sock |
+-----------------------------------------+-----------------------------+
4 rows in set (0.00 sec)
在laravel项目文件夹中,在config文件夹中查找database.php文件。在mysql部分,我根据上表修改了unix_socket。
'mysql' => array(
'driver' => 'mysql',
'host' => '127.0.0.1',
'database' => 'database_name',
'username' => 'username',
'password' => 'password',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'unix_socket' => '/var/run/mysqld/mysqld.sock',
),
现在只需保存更改,并重新加载页面,它就工作了。
我在访问Drupal网站时也遇到了类似的问题。我通过打开命令行,重新启动我的MySQL服务器或服务来修复它:
service mysqld restart
这应该有用。如果没有,重启你的本地web服务器:
service httpd restart
这应该足够了。希望它也适用于其他环境。注意,这些命令通常需要超级用户权限。
所有这些答案似乎都很沉重……
我刚刚创建了一个。env文件;编辑我的bootstrap/app.php文件,并取消注释下面的行…
(__DIR Dotenv:负载 __.'/../');
希望这对大家有所帮助
我在docker_compose中使用Docker和MySQL服务名db时遇到了同样的问题。yml文件:
我在.env文件中添加了以下内容:
DB_HOST=db
您还应该确保可以从PHP应用程序中发现您的主机。
这是因为PHP没有弄清楚使用哪个主机来连接。
如果您正在使用Laravel Homestead,请确保您正在调用服务器上的命令。
homestead ssh
然后简单地cd到正确的目录并在那里发出命令。