php artisan migrate,出现以下错误:
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
NB: 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' => '',
),
我尝试用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 install
然后php artisan migrate
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
mac版本是10.7.4
答案 0 :(得分:170)
如果您正在使用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' => '',
),
答案 1 :(得分:19)
首先,获取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。
答案 2 :(得分:16)
有同样的问题,但它现在对我有用。
如果有人仍有问题,请尝试:
bootstrap/start.php
包含您的实际主机名,而不是虚拟主机的名称。在终端中输入hostname
以获取您的主机名。因为它是一个数组,我相信你可以输入你的主机名和虚拟主机的名称。答案 3 :(得分:12)
如果您使用的是XAMPP,解决方案是:
'mysql' => array(
'driver' => 'mysql',
'unix_socket' => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock',
'host' => 'localhost'
)
答案 4 :(得分:9)
这适用于Laravel 5.0,更改.env文件中的 DB_HOST = 127.0.0.1:33060 。
其他人的回答是不行的......
答案 5 :(得分:5)
对于Laravel 5.0+,在您使用Unix套接字等之前,还要在.env文件中将localhost
更改为127.0.0.1
- 这对我有用。
Noobs要注意:对于任何使用Laravel 5并使用较旧的学习材料的人都要注意文件夹结构与以前版本相比有明显的变化,尽管这似乎更好 - 查看本文https://mattstauffer.co/blog/laravel-5.0-directory-structure-and-namespace < / p>
答案 6 :(得分:3)
另一种解决方案是在主机密钥中添加端口号。在这种情况下,MAMP默认使用8889:
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost:8889',
'database' => 'essays',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
答案 7 :(得分:3)
如果您使用的是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 param被添加到上面的mysql配置驱动器中。