在阿里云服务器出问题之后,阿里工程师说排查不到问题,但是就是不能连接服务器了。所以让我们格式化服务器重新搭建项目。
在搭建项目中,用了半天时间把项目搭建好,但是下午忽然出现这样一个问题。就是很多返回的id都从int变成了string
然后作者就去排查问题。1.因为项目查询是从Elasticsearch里查询数据,所以我们看一下es里的数据是不是字符串。果然发现
es里面的数据存储的是字符串。那到底是不是es的问题呢。
我们继续去打印在在插入es之前的数据是什么样的。结果发现数据在插入es之前,从mysql查询出来异步插入的时候就已经是string了
所以我们去看了下数据表字段设置,是int没错
所以问题出现锁定在了php与mysql的交互
所以作者去百度查询什么问题会导致mysql设置字段为int php查询出来却是string?
结果说是这个配置项的问题
然后我们去加上之后进行打印。发现这并不是问题发生的诱因。并不是解决办法
so这时作者想起来昨天配置项目环境的时候是不是mysql方面有配置问题。
so我们去开发环境看一下
两个环境一个是mysqli 一个是mysqlnd
并且新环境缺少 gd 和obdc,及对应的pdo扩展
so作者改变了环境。重新安装扩展。安装成功之后再跑一次,发现成功
发现确实是mysqli和mysqlnd的区别
原来mysqli查询出来就是string
mysqlnd查询出来是int
问题解决方法就是装mysqlnd。
粗浅经验,望各位采纳!