我相信我已经成功地部署了我的(非常基本的)网站到fortrabbit,但只要我连接到SSH运行一些命令(如php artisan migrate或php artisan db:seed),我得到一个错误消息:

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

在某种程度上,迁移一定是有效的,因为我的表在那里——但这并不能解释为什么它现在不适合我。


当前回答

如果你使用Laravel Homestead, 这里是设置

(包括流浪者-虚拟机)

.bash-profile

alias vm="ssh vagrant@127.0.0.1 -p 2222"

database.php

    'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', '127.0.0.1'),
        'database'  => env('DB_DATABASE', 'homestead'),
        'username'  => env('DB_USERNAME', 'homestead'),
        'password'  => env('DB_PASSWORD', 'secret'),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

终端

vm

vagrant@homestead:~/Code/projectFolder  php artisan migrate:install

其他回答

我在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',
    ),

现在只需保存更改,并重新加载页面,它就工作了。

当使用VirtualMachine时,确保你ssh到那台机器,导航到你的App文件夹,并从那里调用php artisan migrate命令。

在可能的情况下,我只是简单地使用

vagrant up

而不是

homestead up

为了我的熔炉幼虫装置。我假设这意味着站点正在得到服务,但MySQL服务器从未启动过。当我使用后一个命令启动我的流浪者盒子时,错误消失了。

我在使用docker容器运行应用程序时遇到了这个问题。

解决方案是把我正在使用的MySQL服务容器的名称放在docker_compose中。DB_HOST. yml。在我的例子中,它是db:

DB_HOST=db

希望能有所帮助。

如果有人还在寻找答案,只要检查你的。env文件。出于某种原因,laravel创建了一个。env。示例文件,所以所有这些答案都不适合我。我修复了重命名。env的问题。.env的示例