当前位置: 移动技术网 > IT编程>开发语言>PHP > YII2数据库操作出现类似Database Exception – yii\db\Exception SQLSTATE[HY000] [2002] No such file or director

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

2020年05月08日  | 移动技术网IT编程  | 我要评论

yii2进行mysql数据库操作时出现database exception – yii\db\exception  sqlstate[hy000] [2002] no such file or directory错误的解决方法

在进行数据库操作时出现如下类似错误,实际则是php配置文件php.ini中未指定mysql.sock(或mysqld.sock)文件路径导致的pdo无法链接数据库

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 579

这个是由于 通常我们在参考 教程在 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也修改一下

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


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

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

使用mysqld引擎的数据库应修改为如下设置

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对应的路径值复制出来即可

 

 


可以看出我使用的是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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网