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

 更新时间:2014年12月15日 12:41:49   投稿:shichen2014  
这篇文章主要介绍了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中将数组存到文件里的实现代码

    php中将数组存到文件里的实现代码

    php的数组十分强大,有些数据不存入数据库直接写到文件上,用的时候直接require
    2012-01-01
  • PHP is_subclass_of函数的一个BUG和解决方法

    PHP is_subclass_of函数的一个BUG和解决方法

    这篇文章主要介绍了PHP is_subclass_of函数的一个BUG和解决方法,这个BUG存在于php5.3.7版本以前,并且针对interface方面,需要的朋友可以参考下
    2014-06-06
  • php设计模式介绍之值对象模式

    php设计模式介绍之值对象模式

    在所有的最简单的程序中,大多数对象都有一个标识,一个重要的商业应用对象,例如一个Customer或者一个SKU,有一个或者更多的属性---id,name,email地址,这样可以把它从同一个类的其他实例区分开来。此外,对象有一个恒定的标识:它是贯穿于整个应用程序的一个唯一的标识,对于程序员来说,”customer A”在任何地方就是”customer A”,并且只要你的程序在持续运行时"customer A"仍然是"customer A"。 但是一个对象不需要有一个标识。有些对象仅仅是为了描述其他对象的属性。
    2008-04-04
  • 8个必备的PHP功能开发

    8个必备的PHP功能开发

    这篇文章主要介绍了8个必备的PHP功能开发,需要的朋友可以参考下
    2015-10-10
  • 处理单名多值表单的详解

    处理单名多值表单的详解

    本篇文章是对处理单名多值表单进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • php实现在服务器上创建目录的方法

    php实现在服务器上创建目录的方法

    这篇文章主要介绍了php实现在服务器上创建目录的方法,实例分析了php中使用mkdir函数的使用技巧,需要的朋友可以参考下
    2015-03-03
  • ThinkPHP Where 条件中常用表达式示例(详解)

    ThinkPHP Where 条件中常用表达式示例(详解)

    下面小编就为大家带来一篇ThinkPHP Where 条件中常用表达式示例(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • php通过array_push()函数添加多个变量到数组末尾的方法

    php通过array_push()函数添加多个变量到数组末尾的方法

    这篇文章主要介绍了php通过array_push()函数添加多个变量到数组末尾的方法,涉及php中array_push()函数操作数组的技巧,需要的朋友可以参考下
    2015-03-03
  • 关于PHP方法参数的那一些事

    关于PHP方法参数的那一些事

    这篇文章主要给大家介绍了关于PHP方法参数的那一些事,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • PHP以及MYSQL日期比较方法

    PHP以及MYSQL日期比较方法

    MYSQL有日期函数now(),这个值返回的不是时间戳,而是类似2010-10-1 12:12:12类似的, PHP有日期函数date(),date("Y-m-d",time())返回当前的时间,如果单纯用time(),则返回的是当前时间,比方说17等数字
    2012-11-11

最新评论