CakePHP:没有这样的文件或目录(尝试通过 unix:///var/mysql/mysql.sock 连接)

2021-12-21 00:00:00 php mysql cakephp mysql-error-2002

我有一个 cakephp 应用程序在我的本地机器 (mac osx) 上运行良好,然后突然我意识到我无法连接到 mysql.sock.

I have had a cakephp app running fine on my local machine (mac osx) for a while and then suddently I realise that I can't connect to mysql.sock.

我收到此错误:

Warning (2): mysql_connect() [http://php.net/function.mysql-connect]: [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) [CORE/cake/libs/model/datasources/dbo/dbo_mysql.php, line 540]

dbo_mysql.php 的第 540 行如下:

The line 540 of dbo_mysql.php reads:

$this->connection = mysql_connect($config['host'] . ':' . $config['port'], $config['login'], $config['password'], true);

我检查过,没有文件//var/mysql/mysql.sock.它实际上在/tmp/mysql.sock

I've checked, there is no fle //var/mysql/mysql.sock. It's actually in /tmp/mysql.sock

我尝试更改我的 php.ini.default 以匹配上述内容,但它已设置为在/tmp/中查找本地连接.为什么,错误来自哪里?

I tried changing my php.ini.default to match the above but it's already set to look in /tmp/ for local connections. Why, and where is the error coming from?

有人遇到过类似的错误吗?

Has anyone come across a similar error?

谢谢,

琼斯

推荐答案

试试在APP/config/database.php中的mysql.sock文件中传入一个绝对路径

Try passing an absolute path the the mysql.sock file in the APP/config/database.php

<?php
    class DATABASE_CONFIG {
        var $default = array(
            'driver' => 'mysql',
            'persistent' => false,
            'host' => 'localhost',
            'login' => 'dbUser',
            'password' => 'dbPassword',
            'database' => 'dbName',
            'prefix' => '',
            'port' => '/path/to/mysql.sock'
        );
    }

这比通过 ip 运行本地连接要好,因为套接字连接要快得多.

This is better than running via an ip for local connection as the socket connection is much, much faster.

相关文章