YII2 出现Database Exception – yii\db\Exception  SQLSTATE[HY000] [2002] No such file or dir

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

mysql
MySQL Support    enabled
Active Persistent Links    0
Active Links    0
Client API version    5.6.17
MYSQL_MODULE_TYPE    external
MYSQL_SOCKET    /tmp/mysqld.sock
MYSQL_INCLUDE    -I/usr/local/mysql/include
MYSQL_LIBS    -L/usr/local/mysql/lib -lmysqlclient


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张燊Jason

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值