在 Mac 上设置 Laravel php artisan migrate 错误:没有这样的文件或目录 [重复]

Posted

技术标签:

【中文标题】在 Mac 上设置 Laravel php artisan migrate 错误:没有这样的文件或目录 [重复]【英文标题】:Setting up Laravel on a Mac php artisan migrate error: No such file or directory [duplicate] 【发布时间】:2013-10-28 20:06:34 【问题描述】:
    将一个完美运行的 laravel 项目从 git 拉入运行 MAMP 的 mac。项目在 linux 机器上完美运行。 作曲家安装

    php artisan migrate,出现如下错误:

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

注意: php -v 是 5.5 而 mysql -v 是 5.5 从终端 这是我的 config/database.php 的一部分

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

我尝试将 localhost 替换为 127.0.0.1 无济于事。请帮忙..

编辑: 我在 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 install 然后 php artisan migrate 之后遇到了同样的错误

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

mac版本为10.7.4

【问题讨论】:

以前有人问过这个问题,搜索您的错误消息会给出很多问题和可能的答案。试试看。 ***.com/questions/2412009/…***.com/questions/6001592/… 感谢您的编辑和信息。我之前做过一些彻底的研究,在***.com/questions/2412009/… 添加了 php.ini 行和符号链接,但这并没有解决。我还从 git 中提取了一个全新的 laravel 项目,并在 composer install 然后 php artisan migrate 之后遇到了同样的错误 检查我的问题中的编辑...... config/database.php 文件在哪里? 如果您使用的是宅基地/流浪者,请确保您有sshd 进入服务器。而不是从外部运行它。 【参考方案1】:

遇到了同样的问题,但它现在对我有用。

如果还有人遇到问题,试试这个:

确保您的bootstrap/start.php 包含您的实际主机名,而不是虚拟主机的名称。在终端中输入hostname 以获取您的主机名。由于它是一个数组,我相信您可以同时输入您的主机名和虚拟主机的名称。 将“localhost”替换为“127.0.0.1”。

【讨论】:

用“127.0.0.1”替换“localhost”对我有用。 :-)【参考方案2】:

如果您使用的是 MAMP,请务必添加 unix_socket 键和 mysql.sock 驻留在 MAMP 中的路径值。

'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'    => '',
    ),

【讨论】:

这对我有用。一切都很好,直到我出色地决定我想通过 Homebrew 在 Mavericks 上安装/配置 PHP。不用说,过去两周我一直在使用别名 phpmamp='/Applications/MAMP/../pathto/php'。不确定我对这个修复感觉良好,但它让我在没有别名的情况下重新启动并运行。谢谢! 我也使用自制软件,所以解决方案是在config/local/database.php 文件中添加 unix_socket 路径。 我添加了该行,但出现以下错误:[PDOException] SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected 知道是什么问题吗?我看到密钥在 .env 文件中更新,而不是在 database.php 文件中。不确定这是否与它有关...... 您可以使用此答案而不是添加套接字。 ***.com/a/12146144/662581 谢谢,我把这个添加到.envDB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock【参考方案3】:

不要假设你的 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。

【讨论】:

我从 MAMP 自己的 mysql 切换到 mariadb,您的解决方案是唯一有效的解决方案。 如果您在许多项目中工作,php.ini 解决方案可以有效地工作。您不需要在每个项目中更改 database.php 文件,只需编辑 php.ini 文件。感谢您的解决方案【参考方案4】:

如果你使用的是 XAMPP,解决方法是:

'mysql' => array(
        'driver'      => 'mysql',
        'unix_socket' => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock',
        'host'        => 'localhost'
)

【讨论】:

【参考方案5】:

另一种解决方案是在主机密钥中添加端口号。在这种情况下,MAMP 默认使用 8889:

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

【讨论】:

【参考方案6】:

对于 Laravel 5.0+,将 .env 文件中的 localhost 更改为 127.0.0.1,然后再使用 Unix 套接字等 - 这对我有用。

新手当心:对于使用 Laravel 5 和使用旧学习资料的任何人,请注意文件夹结构与以前的版本相比发生了相当大的变化,尽管这似乎是为了更好 - 请查看这篇文章 https://mattstauffer.co/blog/laravel-5.0-directory-structure-and-namespace

【讨论】:

【参考方案7】:

这适用于我在 Laravel 5.0 中,更改 .env 文件中的 DB_HOST=127.0.0.1:33060

其他答案不起作用...

【讨论】:

【参考方案8】:

如果你使用的是 Laravel 5.1.11 版本 + MAC + MAMPP

您必须在文件“yourapp”/app/config/database.php 中添加“Unix_socket”

'mysql' => [
    'driver'    => 'mysql',
    'host'      => env('DB_HOST', 'localhost'),
    'unix_socket'   => '/Applications/MAMP/tmp/mysql/mysql.sock',
    'database'  => env('DB_DATABASE', 'forge'),
    'username'  => env('DB_USERNAME', 'forge'),
    'password'  => env('DB_PASSWORD', ''),
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
    'strict'    => false,
],

Unix_socket 参数已添加到上面的 mysql 配置驱动器中。

【讨论】:

但是我找不到套接字文件。 你的mampp版本是什么

以上是关于在 Mac 上设置 Laravel php artisan migrate 错误:没有这样的文件或目录 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac 上安装 Laravel 会抛出 laravel,即使在设置 PATH 后也找不到

尝试在laravel 5.1 mac上安装php phantom js时,Composer安装错误

/Applications/XAMPP/xamppfiles/bin/php - Xampp Mac 上的 Laravel

我如何在 mac high sierra 上安装 Laravel 8

Laravel 5.5 项目下载文件而不是在浏览器中打开它们 PHP 7.1 MAC

Laravel: 基础篇