Mysql #1690-双精度值超出';战俘;。。。在生产方面,在当地工作良好

Mysql #1690-双精度值超出';战俘;。。。在生产方面,在当地工作良好,mysql,sql,Mysql,Sql,我正在使用以下SQL查询 select links.id, links.title, links.url, links.user_id, links.created_at, sum(vote) as votes, (sum(vote)) / POWER(time_to_sec(TIMEDIFF(now(),links.created_at))/3600, 1.8) as rank from links inner join votes on links.id = votes.link_id wh

我正在使用以下SQL查询

select links.id, links.title, links.url, links.user_id, links.created_at, sum(vote) as votes, (sum(vote)) / POWER(time_to_sec(TIMEDIFF(now(),links.created_at))/3600, 1.8) as rank from links inner join votes on links.id = votes.link_id where links.language_id = 2 group by links.id order by rank, links.id DESC LIMIT 10
这在本地运行正常,但在我的生产服务器上出现错误:

#1690 - DOUBLE value is out of range in 'pow((time_to_sec(timediff(now(),`zavoon-news`.`links`.`created_at`)) / 3600),1.8)'
我的开发和生产环境都使用相同版本的MySQL:Ver 14.14 Distrib 5.7.20

我的理解是,这一部分:

time_to_sec(timediff(now(),`zavoon-news`.`links`.`created_at`))
正在超出范围,但我不知道为什么。我在谷歌上查了一下,但我想不出来

下面是一个sqlfiddle:


非常感谢您的帮助:)

通过找出导致错误的记录来检查基础数据。产生此问题需要一个样本数据。有可能一台计算机是32位的,另一台是64位的吗?@MKhalidJunaid这里有一个SQLFIDLE:@Marichyasana都是64位的通过找出导致错误的记录来检查基础数据错误。生成此问题需要一个示例数据。可能一台计算机是32位的,另一台是64位的吗?@MKhalidJunaid这是一个sqlfiddle:@Marichyasana两者都是64位的