mysql里面出现SQLSTATE[HY000] [2002] No such file or directory 这类异常说明链接套接字文件xxx.sock 没有找到
异常信息:
Illuminate\Database\QueryException
SQLSTATE[HY000] [2002] No such file or directory (Connection: mysql, SQL: select `*` from `user`)
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:829
825▕ $this->getName(), $query, $this->prepareBindings($bindings), $e
826▕ );
827▕ }
828▕
➜ 829▕ throw new QueryException(
830▕ $this->getName(), $query, $this->prepareBindings($bindings), $e
831▕ );
832▕ }
833▕ }
解决方法:
1. 先使用mysql_config命令查看当前mysql的sock文件的位置
mysql_config --socket
2.使用php --ini命令查看php.ini配置文件的路径信息
php --ini
3. 打开php.ini文件,搜索pdo_mysql.default_socket 然后将这个的值替换为上面获取到的sock文件路径
如下图:
保存php.ini文件,至此,这个问题应该就解决了。
临时解决方案:在命令中指定环境变量
在执行 Artisan 命令时,临时覆盖环境变量:
DB_SOCKET= DB_HOST=127.0.0.1 php artisan migrate