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

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

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


当前回答

添加mysql。袜子路径在database.php文件如下示例

'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',

Eample

'mysql' => [
        'driver' => 'mysql',
        'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
        'host' => env('DB_HOST', 'localhost'),
        'port' => env('DB_PORT', '8889'),

其他回答

来自@stuyam的回答为我解决了“没有这样的文件或目录”的问题

简单回答:将/app/config/database.php文件中的“host”从“localhost”更改为“127.0.0.1”

但随后出现了“拒绝连接”错误。如果有人有同样的问题,我的解决方案是更新app/config/local/database.php文件,使端口为8889:

'mysql' => array(
        'driver'    => 'mysql',
        'host'      => '127.0.0.1',
        'port'      => '8889',
        'database'  => 'databaseName',
        'username'  => 'root',
        'password'  => 'root',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

仔细检查端口。在我的情况下,它是8889,我正在使用8888。 将“DB_HOST”从“localhost”改为“127.0.0.1”,反之亦然

我遇到了同样的问题,我运行的是Mac OS X 10.10 Yosemite。我已经启用了操作系统自带的Apache服务器和PHP。然后,我刚刚配置了mCrypt库开始。在那之后,当我使用模型和DB时,我得到了一个错误:

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

我发现的原因只是因为PHP和MySQL不能自己连接。 为了解决这个问题,我遵循以下步骤:

Open a terminal and connect to the mysql with: mysql -u root -p It will ask you for the related password. Then once you get the mysql promt type the next command: mysql> show variables like '%sock%' You will get something like this: +-----------------------------------------+-----------------+ | Variable_name | Value | +-----------------------------------------+-----------------+ | performance_schema_max_socket_classes | 10 | | performance_schema_max_socket_instances | 322 | | socket | /tmp/mysql.sock | +-----------------------------------------+-----------------+ Keep the value of the last row: /tmp/mysql.sock In your laravel project folder, look for the database.php file there is where you configure the DB connection parameters. In the mysql section add the next line at the end: 'unix_socket' => '/tmp/mysql.sock' You must have something like this: 'mysql' => array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'SchoolBoard', 'username' => 'root', 'password' => 'venturaa', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'unix_socket' => '/tmp/mysql.sock', ),

现在只需保存更改,并重新加载页面,它必须工作!

这发生在我身上是因为MySQL没有运行。MySQL无法启动,因为我丢失了/usr/local/etc/my.cnf.d/目录。

这是我的/usr/local/etc/my.cnf配置文件作为glob include(包括/usr/local/etc/my.cnf.d/*.cnf)所要求的。

运行mkdir /usr/local/etc/my.cnf.d,然后启动MySQL,解决了这个问题。

我的答案是针对Laravel的。

在database.php配置文件中创建到本地Docker MySQL服务的新连接并将其设置为默认连接后,我收到了这条消息。我忘记了我通过在模型中覆盖它来设置一个不同的连接:

class Model extends \Illuminate\Database\Eloquent\Model
{
    protected $connection;

    public function __construct(array $attributes = [])
    {
        parent::__construct($attributes);
        $this->connection = 'some_other_connection';
    }
...

因此,即使我在database.php文件中的默认连接指向正确的凭据,模型仍然使用我从本地环境文件中删除的远程数据库连接配置。