问题描述:
在EC项目中,要执行洗数据的操作,将mysql的数据清洗到mongo中。所以,需要创建一个artisan执行脚本。
但当执行脚本命令php artisan ZgOrderUpdate时,报could not find dirver(SQL: select order_cityid
, license_city
, create_time
from zg_order_detail
where order_id
= 1 limit 1)错误。
解决思路:
因为在浏览器请求是没问题的,命令行执行报错,说明跟执行环境有关系。根据报错could not find dirver可知是找不到mysql连接驱动。
-
首先,手动连接一下pdo,看是否能连上,发现连接不上。可以确定是pdo-mysql扩展的原因了。
-
使用php -i |grep "pdo" 查看pdo-mysql driver扩展的安装情况.
下图是同事的,有pdo-mysql driver扩展
这个是我的,是没有pdo-mysql driver扩展
但我和同事其实使用的是一套docker环境,为什么他的有,而我的没有呢,后来自己观察,发现我在命令行执行PHP命令默认是使用的7.3环境下的,而同事的是7.2环境下的,7.2环境是有各种驱动的。
找到问题了,剩下的事情就好解决了。
解决办法:
- 使用which php查看php命令的绝对路径,发现在/usr/bin目录下,ll这个目录,发现php默认是指向php7.3的,现在就想法让php默认执行7.2就可以了。
-
但是我没有使用这种办法,而是直接的将命令行的执行命令从php artisan ZgOrderUpdate 改成了php7.2 artisan ZgOrderUpdate ,因为/usr/bin目录下有php7.2命令文件,所以可以直接运行。至此,问题解决。
php命令默认是指向php7.3