sql语句为
SELECT COUNT(id) AS tp_count FROM `tableName` WHERE `status` = 0 AND `source` = 1 AND ( `end_time`-`add_time` > 2592000 AND `end_time`-`add_time` <= 5184000 ) LIMIT 1
发生报错如下
PDOException:SQLSTATE [HY000]:常规错误:2014在其他未缓冲的查询处于活动状态时无法执行查询。考虑使用PDOStatement :: fetchAll()。或者,如果您的代码只是针对mysql运行,则可以通过设置PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY属性来启用查询缓冲。
在google查找报错信息,各种改配置,优化 sql,没有明确办法
在阿里云 SDN上执行 sql,发现报错
Data truncation: BIGINT UNSIGNED value is out of range in '(`end_time`-`add_time` > 2592000 AND `end_time`-`add_time` <= 5184000 )'
经过排查发现,有的数据中end_time小于 add_time,所以 sql 条件运算为负值,产生 BIGINT UNSIGNED 报警,于是修改 sql 如下
SELECT COUNT(id) AS tp_count FROM `tableName` WHERE `status` = 0 AND `source` = 1 AND `end_time` > `add_time` AND ( `end_time`-`add_time` > 2592000 AND `end_time`-`add_time` <= 5184000 ) LIMIT 1