问题描述:

在EC项目中,要执行洗数据的操作,将mysql的数据清洗到mongo中。所以,需要创建一个artisan执行脚本。

image.png

但当执行脚本命令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)错误。

image.png

解决思路:

因为在浏览器请求是没问题的,命令行执行报错,说明跟执行环境有关系。根据报错could not find dirver可知是找不到mysql连接驱动。

  1. 首先,手动连接一下pdo,看是否能连上,发现连接不上。可以确定是pdo-mysql扩展的原因了。

    image.png
  2. 使用php -i |grep “pdo” 查看pdo-mysql driver扩展的安装情况.
    下图是同事的,有pdo-mysql driver扩展

    image.png

    这个是我的,是没有pdo-mysql driver扩展

    image.png

    但我和同事其实使用的是一套docker环境,为什么他的有,而我的没有呢,后来自己观察,发现我在命令行执行PHP命令默认是使用的7.3环境下的,而同事的是7.2环境下的,7.2环境是有各种驱动的。
    找到问题了,剩下的事情就好解决了。

解决办法:

  1. 使用which php查看php命令的绝对路径,发现在/usr/bin目录下,ll这个目录,发现php默认是指向php7.3的,现在就想法让php默认执行7.2就可以了。
  2. 但是我没有使用这种办法,而是直接的将命令行的执行命令从php artisan ZgOrderUpdate 改成了php7.2 artisan ZgOrderUpdate ,因为/usr/bin目录下有php7.2命令文件,所以可以直接运行。至此,问题解决。
    php命令默认是指向php7.3

    image.png

文章来源于互联网:cli环境下无法连接mysql

发表评论