【问题标题】:php artisan migrate - SQLSTATE[HY000] [2002] No such file or directoryphp artisan migrate - SQLSTATE[HY000] [2002] 没有这样的文件或目录
【发布时间】:2017-08-03 05:14:17
【问题描述】:

我浏览了 laravel 待办事项应用程序,却被困在 php artisan migrate 部分。我知道这个问题已经在这里发布了很多次,但我觉得我已经尝试了很多不起作用的建议——将主机更改为 localhost 和 127.0.0.1,生成 .env 文件的密钥,添加一个套接字,强制迁移等。下面是我的 .env 和数据库文件的屏幕截图,供您参考。非常感谢任何帮助!

screenshot here

【问题讨论】:

    标签: laravel


    【解决方案1】:

    自从我使用 MAMP 后遇到了同样的问题。我在 laravel 5.5 上,所以我的 database.php 在 mysql 指令下有这一行:

    'unix_socket' => env('DB_SOCKET', ''),
    

    解决方案是添加环境文件中缺少的 DB_SOCKET 选项:

    DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
    

    【讨论】:

      【解决方案2】:

      因此,由于您使用的是 MAMP,因此有一些注意事项可能不清楚,例如 MAMP 未使用普通的 UNIX 套接字。

      但要解决您的问题,您需要在数据库配置文件中执行以下操作,将 unix_socket 替换为:

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

      您可能还需要运行:

      php artisan cache:clear
      

      如果您的配置文件之前已被缓存。

      【讨论】:

      • 我按照您上面的建议更改了 unix_socket,还清除了缓存,但仍然收到错误消息 -- [PDOException] SQLSTATE[HY000] [2002] No such file or director
      • @emily 通过将路径放入 .env 文件中尝试 techytimo 解决方案
      【解决方案3】:

      我在使用 Laravel 5.7.3 和 XAMPP for OS X(不是 XAMPP-VM)时遇到了同样的问题,并通过在 post 中参考 Kyo 的解决方案设法解决了这个问题。

      我更新了 config/database.php 中的第 49 行:

      'unix_socket' => env('DB_SOCKET', ''),
      

      'unix_socket' => env('DB_SOCKET', '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock'),
      

      我也尝试了上面 TechyTimo 的解决方案,这也对我有用。我认为使用此解决方案会更好,因为所有配置都保存在一个文件中。

      【讨论】:

      • 我想尝试@Claret15 提到的这个解决方案,因为我在 xampp 上,但我缺少 mysql 套接字文件。我期待在这里找到它:/opt/lampp/var/mysql
      猜你喜欢
      • 1970-01-01
      • 2020-05-07
      相关资源
      最近更新 更多