Mwi*_*Tim 45 php mysql mmap laravel
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)
lij*_*nma 20
首先,获取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终端以获取您的主机名.因为它是一个数组,我相信你可以输入你的主机名和你的虚拟主机的名称.小智 12
如果您使用的是XAMPP,解决方案是:
'mysql' => array(
'driver' => 'mysql',
'unix_socket' => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock',
'host' => 'localhost'
)
Run Code Online (Sandbox Code Playgroud)
小智 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 配置驱动器。
对于Laravel 5.0+更改localhost为127.0.0.1.env文件以及在使用Unix套接字等之前 - 这对我有用.
Noobs要注意:对于任何使用Laravel 5并使用较旧的学习材料的人都要注意,文件夹结构与以前的版本相比有明显的变化虽然这似乎更好 - 请查看这篇文章https://mattstauffer.co/blog /laravel-5.0-directory-structure-and-namespace
| 归档时间: |
|
| 查看次数: |
73309 次 |
| 最近记录: |