在Mac上设置Laravel php工匠迁移错误:没有这样的文件或目录

2022-08-30 10:38:02
  1. 将一个完美工作的 laravel 项目从 git 拉到运行 MAMP 的 mac 中。项目在Linux机器上完美运行。
  2. 作曲家安装
  3. php工匠迁移,得到以下错误:

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

注意:php -v是5.5,mysql -v是5.5,来自终端这是我的配置/数据库的一部分.php

    'mysql' => array(
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'essays',
        'username'  => 'root',
        'password'  => 'root',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

我尝试用127.0.0.1替换localhost,但无济于事。请帮忙..

编辑:我在我的php中添加了这三行.ini

mysql.default_socket = /var/run/mysqld/mysqld.sock

mysqli.default_socket = /var/run/mysqld/mysqld.sock

pdo_mysql.default_socket = /var/run/mysqld/mysqld.sock

我还添加了这个符号链接:

sudo mkdir /var/mysql
cd /var/mysql && sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock

但这并没有解决。我还从git中提取了一个新的laravel项目,之后遇到了同样的错误。composer installphp artisan migrate

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

Mac版本是10.7.4


答案 1

如果使用 MAMP,请确保添加具有驻留在 MAMP 中的路径值的键。unix_socketmysql.sock

'mysql' => array(
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'unix_socket'   => '/Applications/MAMP/tmp/mysql/mysql.sock',
        'database'  => 'database',
        'username'  => 'root',
        'password'  => 'root',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

答案 2

不要假设你的unix_socket,这两个房间彼此不同,试着找到它。

首先,获取您的unix_socket位置

$ mysql -uroot -p

输入您的mysql密码并从命令行登录您的mysql服务器。

mysql> show variables like '%sock%';
+---------------+---------------------------------------+
| Variable_name | Value                                 |
+---------------+---------------------------------------+
| socket        | /opt/local/var/run/mysql5/mysqld.sock |
+---------------+---------------------------------------+

您的unix_soket可能会有所不同。

然后你有2解决方案来解决你的问题:

(1) 更改您的config/database.php

    'mysql' => array(
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'essays',
    'username'  => 'root',
    'password'  => 'root',
    'unix_socket'   => '/opt/local/var/run/mysql5/mysqld.sock', //Your sock got from above
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
),

(2)更改你的php.ini,从php.ini

<? phpinfo();

你可能会安装许多不同版本的php,所以请不要假设你的php.ini文件位置,从你的“phpinfo”中获取它;

更改你的 php.ini:

mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock

mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock

pdo_mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock

然后重新启动你的apache或php-fpm。


推荐