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

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

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


当前回答

我只是在。env文件中做了一个更改

我有如下一行代码。

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=database_name
DB_USERNAME=root
DB_PASSWORD=

修改主机名localhost为127.0.0.1

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database_name
DB_USERNAME=root
DB_PASSWORD=

这是在我的情况下工作,因为它不能找到任何主机名,如localhost

并在更改主机名后编写以下命令

php artisan config:clear
php artisan migrate:install
php artisan migrate

其他回答

错误消息表明尝试通过套接字进行MySQL连接(不支持)。

在Laravel (artisan)环境中,您可能需要使用不同/正确的环境。例如:php artisan migrate——env=生产(或任何环境)。在这里看到的。

所有现有的答案都是正确的,可能对你有用。 我的情况有点不同。我在本地使用docker-compose up启动一个docker项目时遇到了这个错误。

对于我的特定情况,问题是我从子文件夹运行docker-compose,而不是从docker-compose文件所在的根文件夹运行。

确保从docker-compose所在的文件夹中运行docker-compose。Yml保存到!

尝试连接到本地主机:

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

尝试连接127.0.0.1:

SQLSTATE[HY000] [2002] Connection refused

好的,只需在my.cnf (OS X 10.5: /opt/local/etc/mysqlxx/my.cnf)中注释/删除以下设置即可获得:

[mysqld]
# skip-networking

当然,停止和启动MySQL服务器。

我在MAMP Pro上运行,在尝试迁移(创建db表)时遇到了类似的问题。我也尝试了上面提到的一些建议,但对我来说并不奏效。

因此,简单地(在谷歌了一个小时后),我向/config/database.php添加了两个东西。

'port' => '1234',
'unix_socket' => '/path/to/my/socket/mysqld.sock'

现在工作很好!

如果你使用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