YII2数据库操做出现相似Database Exception – yii\db\Exception SQLSTATE[HY000] [2002] No such file or director

YII2进行MYSQL数据库操做时出现Database Exception – yii\db\Exception  SQLSTATE[HY000] [2002] No such file or directory错误的解决方法php

在进行数据库操做时出现以下相似错误,实际则是PHP配置文件php.ini中未指定mysql.sock(或mysqld.sock)文件路径致使的PDO没法连接数据库java

Database Exception – yii\db\Exception
SQLSTATE[HY000] [2002] No such file or directory

Caused by: PDOException
SQLSTATE[HY000] [2002] No such file or directory
in /var/www/yii2/vendor/yiisoft/yii2/db/Connection.php at line 579mysql

这个是因为 一般咱们在参考 教程在 MAC OS LINUX下安装 MYSQL 时,
默认将PHP.ini 中的如下三项留空致使的YII2所需的PDO组建没法找到mysql.sock(或mysqld.sock)文件地址致使的
mysql.default_socket = 
pdo_mysql.default_socket=
mysqli.default_socket =
而没有把另外两个YII 框架须要调用到的模块的default_socket也修改一下sql

解决方法 就是
vim usr/local/php/etc/php.ini数据库


把如下三个原来空白的值都设置为 /tmp/mysql.sock(或/tmp/mysqld.sock)具体位置请替换成你实际安装mysql数据库时的实际mysql.sock(或mysqld.sock)文件地址apache

mysql.default_socket = /tmp/mysql.sock
pdo_mysql.default_socket= /tmp/mysql.sock
mysqli.default_socket =/tmp/mysql.sockvim

使用mysqld引擎的数据库应修改成以下设置yii2

mysql.default_socket = /tmp/mysqld.sock
pdo_mysql.default_socket= /tmp/mysqld.sock
mysqli.default_socket =/tmp/mysqld.sock框架

若是你不知道本身使用的是mysql.sock仍是mysqld.sock文件,或者不知道mysql_socket文件的位置,打开phpinfo() 函数信息页面找到以下PHP扩展中MYSQL扩展所在位置,找到里面的MYSQL_SOCKET对应的路径值复制出来便可yii

 

 


能够看出我使用的是mysqld.sock 文件,所以我php.ini中关于数据库的配置修改以下:
mysql.default_socket = /tmp/mysqld.sock
pdo_mysql.default_socket= /tmp/mysqld.sock
mysqli.default_socket =/tmp/mysqld.sock
修改完成后 重启apache 或者NGINX下重启php-fpm 便可解决问题

注:实际上Yii2所使用的PDO连接数据库,之修改设定pdo_mysql.default_socket 一项的配置文件路径便可,但考虑到后续使用和其余一些应用场合,就索性连同mysql,mysqli的socket路径一同设置修改了(修改设置路径地址 必须为mysql_socket所在实际文件路径地址,不然将致使PHP没法正常连接使用MYSQL数据库)……转载连接:https://blog.csdn.net/zqtsx/java/article/details/41845511

相关文章
相关标签/搜索