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

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

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


当前回答

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

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

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

现在工作很好!

其他回答

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

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

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

解决了

在我的情况下,这是代码中的逻辑问题,连接值在if语句中:

if($_SERVER['HTTP_HOST'] == "localhost")

所以解决方案是添加一个管道,并添加127.0.0.1,这解决了我的问题

if($_SERVER['HTTP_HOST'] == "localhost" || $_SERVER['HTTP_HOST'] == "127.0.0.1")

检查您的MySQL服务器是否正在运行,如果数据库连接配置正确。

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

基于@dcarrith的回答…

我没有编辑配置文件,而是在PHP正在查找的位置中创建了一个别名,该别名连接到真正的mysql.sock。(源)

只需运行这两个命令(不需要重新启动):

mkdir /var/mysql
ln -s /tmp/mysql.sock /var/mysql/mysql.sock