当前位置: 首页 > 编程笔记 >

php使用pdo连接报错Connection failed SQLSTATE的解决方法

宦飞
2023-03-14
本文向大家介绍php使用pdo连接报错Connection failed SQLSTATE的解决方法,包括了php使用pdo连接报错Connection failed SQLSTATE的解决方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了php pdo_mysql连接报错Connection failed: SQLSTATE[HY000] [2002] No such file or directory问题的解决方法。分享给大家供大家参考。具体方法如下:

错误描述:

Connection failed: SQLSTATE[HY000] [2002] No such file or directory

环境概述:
MacOS
xampp 搭建的开发环境 apache mysql php
xampp 已支持mysql oracle 测试ok,且 phpinfo已上显示支持pdo_mysql pdo_pgsql pdo_sqlite

其中mysql我用的是brew包管理安装到机器里面的,而非xampp自带的mysql

php pdo 连接报错 Connection failed: SQLSTATE[HY000] [2002] No such file or directory

开始以为找不到文件是因为 url rewrite导致的,(因为从nginx切换到apache)结果跟踪程序发现是 new pdo 报错

经过搜索一些资料研究发现:

这个是php.ini配置文件中pdo_mysql.default_socket指定的mysql.sock路径不对
我的mysql.sock文件在 /private/tmp/mysql.sock

所以要设置:

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

如果不知道自己的mysql.sock在哪里可以搜索(因为编译安装,和yum、apt-get、或者brew等包管理工具安装的位置不一样)
sudo find / -name 'mysql.sock'
下面是官方给出bug修复

1. Open up php.ini (mine was in /private/etc/)
2. locate this line: pdo_mysql.default_socket=/var/mysql/mysql.sock
3. Change the line to: pdo_mysql.default_socket=/tmp/mysql.sock
4. Restart apache

1、我这里需要补充下,如果是新系统或者刚玩php的同志,在Mac的系统中php.ini 文件不存在。
2、需要在/private/etc/目录下cp  php.ini.default
php.ini ,然后再做修改下
3、但是如果使用的xampp mysql作为数据库,那么就不需要使用官方的step2,直接写下面方式就可以了。

pdo_mysql.default_socket=/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock

 
解决方法三:
sudo vim /etc/php.ini

把以下三个原来空白的值都设置为:
/tmp/mysql.sock

mysql.default_socket = /tmp/mysql.sock

pdo_mysql.default_socket= /tmp/mysql.sock

mysqli.default_socket =/tmp/mysql.sock

 
都修改了
修改完成后使用
sudo /usr/sbin/apachectl restart

问题搞定!

希望本文所述对大家的PHP程序设计有所帮助。

 类似资料:
  • 我想建立一个帖子和评论系统。 帖子运行良好,但评论无效 PHP错误:致命错误:C:\xampp\htdocs\index.php:133堆栈跟踪中带有无效数据源名称的未捕获异常“PDOExc0019”:#0 C:\xampp\htdocs\index.php(133): PDO- 这是表的元素。请帮忙。

  • 本文向大家介绍php使用PDO方法详解,包括了php使用PDO方法详解的使用技巧和注意事项,需要的朋友参考一下 本文详细分析了php使用PDO方法。分享给大家供大家参考。具体分析如下: PDO::exec:返回的是int类型,表示影响结果的条数. 返回的是boolean型,true表示执行成功,false表示执行失败,这两个通常出现在如下代码: 一般情况下可以用$rs0的值判断SQL执行成功与否,

  • E立方管理平台表单填报时超链接不能使用,点击这些超链接出现“由于本机的限制,该操作已被取消,请与系统管理员联系”的提示,可用以下方法解决: 一、Office 2003       解决方法:IE - 工具 - Internet选项,点“程序”,在“默认的WEB浏览器”中点“设为默认值”,就可以解决这个问题,在EXCEL中点链接不再提示“由于本机的限制,该操作已被取消,请与系统管理员联系”这个信息了

  • 当我尝试在数据库中插入数据时,会出现以下错误: 致命错误:未捕获PDOException:在C:\xampp\htdocs\social media\classes\DB中找不到驱动程序。php:5堆栈跟踪:#0 C:\xampp\htdocs\socialmedia\classes\DB。php(5):PDO-

  • 本文向大家介绍gorm golang 并发连接数据库报错的解决方法,包括了gorm golang 并发连接数据库报错的解决方法的使用技巧和注意事项,需要的朋友参考一下 底层报错 error:cannot assign requested address 原因 并发场景下 client 频繁请求端口建立tcp连接导致端口被耗尽 解决方案 root执行即可 sysctl -w net.ipv4.tcp

  • 本文向大家介绍解决springboot 连接 mysql 时报错 using password: NO的方案,包括了解决springboot 连接 mysql 时报错 using password: NO的方案的使用技巧和注意事项,需要的朋友参考一下 最近使用 springboot 配置 mysql 时出现了一个错误 Access denied for user ''@'localhost' (u