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
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。