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

  1. 把一个完美的laravel项目从一个git变成了一个运行MAMP的mac。 项目在Linux机器上完美运行。
  2. composer php安装
  3. PHP的工匠迁移,得到以下错误:

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

注意:php -v是5.5和mysql -v是从terminal5.5这里是我的config / database.php的一部分

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

我试图用127.0.0.1replace本地主机无济于事。 请帮忙..

编辑:我在我的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

如果你正在使用MAMP,一定要添加一个mysql.sock驻留在MAMPpath的值的unix_socket键。

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

不要假设你的unix_socket从一个到另一个不同,试着find它。

首先, 获取你的unix_socket位置

 $ mysql -uroot -p 

input你的mysql密码并从命令行login你的mysql服务器。

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

你的unix_soket可能是不同的。

然后你有2个解决scheme来解决你的问题:

(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,find你的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。

有同样的问题,但它现在为我工作。

如果有人仍然有问题,试试这个:

  • 确保你的bootstrap/start.php包含你的实际主机名,而不是你的虚拟主机的名字。 inputterminal中的主机名以获取您的主机名。 因为这是一个数组,我相信你可以input你的主机名和你的虚拟主机的名字。
  • 将“localhost”replace为“127.0.0.1”。

如果您使用XAMPP,则解决scheme是:

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

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

其他答案不起作用…

对于Laravel 5.0+,在你的.env文件中将localhost改为127.0.0.1 ,然后再使用Unix Sockets进行游戏 – 这对我很有用。

Noobs要小心:对于任何使用Laravel 5并使用较老的学习资料的人来说,请注意文件夹结构与以前的版本有相当大的转变,虽然这似乎是更好的,请查看本文https://mattstauffer.co/blog /laravel-5.0-directory-structure-and-namespace

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

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

如果你正在使用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, ], 

Unix_socket参数被添加到上面的mysqlconfiguration驱动器。