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

Mwi*_*Tim 45 php mysql mmap laravel

  1. 将一个完美工作的laravel项目从一个git拉到一个运行MAMP的mac上.项目在linux机器上完美运行.
  2. 作曲家安装
  3. php artisan migrate,出现以下错误:

    [PDOException]                                    
    SQLSTATE[HY000] [2002] No such file or directory 
    
    Run Code Online (Sandbox Code Playgroud)

注意: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'    => '',
    ),
Run Code Online (Sandbox Code Playgroud)

我尝试用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
Run Code Online (Sandbox Code Playgroud)

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

sudo mkdir /var/mysql
cd /var/mysql && sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Run Code Online (Sandbox Code Playgroud)

但那并没有解决.我也是从混帐拉一个全新的laravel项目后遇到同样的错误composer install,然后php artisan migrate

 [PDOException]                                    
  SQLSTATE[HY000] [2002] No such file or directory 
Run Code Online (Sandbox Code Playgroud)

mac版本是10.7.4

kei*_*ics 171

如果您正在使用MAMP,请务必添加unix_socket密钥,其中包含MAMP中所包含的路径值mysql.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'    => '',
    ),
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,它对我有用,将它添加到`.env`:`DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock` (2认同)

lij*_*nma 20

不要假设你的unix_socket彼此不同,试着找到它.

首先,获取unix_socket位置.

$ mysql -uroot -p
Run Code Online (Sandbox Code Playgroud)

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

mysql> show variables like '%sock%';
+---------------+---------------------------------------+
| Variable_name | Value                                 |
+---------------+---------------------------------------+
| socket        | /opt/local/var/run/mysql5/mysqld.sock |
+---------------+---------------------------------------+
Run Code Online (Sandbox Code Playgroud)

你的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'    => '',
),
Run Code Online (Sandbox Code Playgroud)

(2)更改你的php.ini,php.ini从中找到你的文件

<? phpinfo();
Run Code Online (Sandbox Code Playgroud)

你可能安装了许多不同版本的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
Run Code Online (Sandbox Code Playgroud)

然后重启你的apache或php-fpm.


Nic*_*ick 16

有同样的问题,但它现在对我有用.

如果有人仍有问题,请尝试以下方法:

  • 确保您bootstrap/start.php包含实际的主机名,而不是虚拟主机的名称.输入hostname终端以获取您的主机名.因为它是一个数组,我相信你可以输入你的主机名和你的虚拟主机的名称.
  • 将"localhost"替换为"127.0.0.1".

  • 用"127.0.0.1"替换"localhost"对我有用.:-) (2认同)

小智 12

如果您使用的是XAMPP,解决方案是:

'mysql' => array(
        'driver'      => 'mysql',
        'unix_socket' => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock',
        'host'        => 'localhost'
)
Run Code Online (Sandbox Code Playgroud)


Igo*_*ade 9

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

其他答案不起作用......


小智 6

如果你使用的是 Laravle 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,
],
Run Code Online (Sandbox Code Playgroud)

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


bri*_*non 5

对于Laravel 5.0+更改localhost127.0.0.1.env文件以及在使用Unix套接字等之前 - 这对我有用.

Noobs要注意:对于任何使用Laravel 5并使用较旧的学习材料的人都要注意,文件夹结构与以前的版本相比有明显的变化虽然这似乎更好 - 请查看这篇文章https://mattstauffer.co/blog /laravel-5.0-directory-structure-and-namespace


归档时间:

查看次数:

73309 次

最近记录:

8 年,10 月 前