今天群里一位朋友用PDO的时候,出现了这种报错“could not find driver”,这句话的大概意思是: 没有找到驱动。
原因:
以上这种问题,也就是大家经常问的PDO drivers没有mysql或PDO drivers 不支持mysql这两个问题。原因其实都是一样的,都是缺少pdo_mysql扩展。
解决办法:
其实办法很简单,无非就是检查你是否安装了PDO扩展?如果你已经安装了PDO扩展。再检查你是否安装了支持PDO连接数据库的类型扩展?因为PDO支持很多种数据库类型。例如:mysql、sqlite、pgsql等。
谈谈我是如何解决“could not find driver”这个问题的?
1、查看PDO扩展是否安装?
直接用phpinfo()函数查看。得到如下结果:
从上图可以看出,PDO已经安装了,但是PDO驱动只安装了sqlite数据库,意思是PDO这个扩展目前只支持sqlite数据库,但是我朋友用的是mysql数据库,因此报错就很正常了。
2、开启pdo支持mysql数据库类型的驱动扩展:pdo_mysql。
如果你是windows服务器,直接修改php.ini,去掉前面“;"即可开启此扩展。
如果你是linux服务器,你就要自己安装pdo_mysql这个扩展。
从源码包安装pdo_mysql命令如下:
cd /usr/local/php5.5.28/etx/pdo_mysql
/usr/local/php/bin/phpize
./configure --with-php-config=/fujieace/php/bin/php-config
make && make install
成功后会生成一个pdo_mysql.so的类似路径:
nstalling shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/***
再把pdo_mysql.so加入php.ini:
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/pdo_mysql.so
3、查看是否成功?
重启php后,如果你pdo_mysql安装成功后,phpinfo界面应该是这个样子的,如下图:
注意:
linux下安装的pdo_mysql扩展一定要跟你的PHP版本一致,(建议从源码包安装)不能随便乱安装,否则你会发现就算成功安装这个扩展生成了so,但是phpinfo里面依然不会成功显示。
2019年07月08日 16:27:38 沙发
博主真的超级nice,很耐心的帮我远程解决问题,很棒
2019年07月08日 16:00:58 板凳
我今天也遇到了pdo,mysql扩展问题,php.ini配置按照文章注释,也打开了都没有用,后来找博主远程才解决了此问题。
原因:不知道为什么?我用php5.6按照此文章操作就可以,但是我用php7.0.2修改配置文件php.ini后死活不生效,我重启了phpstudy也没有用,很无语。或许是我电脑的问题,没准我下次重启电脑后或清理浏览器缓存、coolie等就又可以了,先不管了,先用php5.6上班干活再说。
2019年05月08日 16:14:48 地板
这几步在干啥?
2019年05月08日 20:21:51 1层
@argor 简单说,就是PHP在linux开启pdo_mysql这个扩展啊!windows的话,不用这样麻烦。
2019年04月16日 20:18:16 4楼
我今天也出现了“could not find driver”这个问题,如下图:
但是我想用PDO连接SQL Server数据库,结果没搞出来,还好远程博主帮我解决了!非常感谢!
2019年04月15日 14:18:17 5楼
phpinfo界面显示和文章里一样,但还是没好用
2019年04月15日 14:30:14 1层
@让时间说真话 你的具体情况一定要先说明白,像上次有位朋友一样,他自己把项目数据库连接方式改了,然后却用的PDO去跑,当然不行。后来用的mysqli瞬间OK!
具体可以Q上联系我!
2019年04月15日 14:54:09 2层
@付杰 qq多少,加你qq吧
2019年04月15日 15:33:47 3层
@让时间说真话 我博客有啊,QQ:2508830500
2019年03月18日 14:20:29 6楼
我的已经安装了PDO以及也支持mysql的扩展类型,
但还是提示找不到驱动?怎么办?
2019年03月18日 14:28:14 1层
@wofe phpinfo界面显示是什么样子的呢?和文章显示的都是一样的吗?涉及到具体操作问题,最好是Q上直接联系我!
2019年03月18日 15:35:38 2层
@付杰 我Q是345******,麻烦加我一下,谢谢!