错误是
*** Exception: Incompatible {errsqlType = "int8",errHaskellType = "Int",errMessage = "types incompatible"}
看起来查询中count(*)返回的任何值都必须转换为Integer而不是Int.如果我将这些特定变量更改为Integer类型,则查询可以正常工作.
但是在具有相同确切代码的另一台机器上没有引发此错误.第一台机器是32位,另一台机器是64位.这是我能辨别的唯一区别.
有没有人对正在发生的事情有任何见解?
Postgresql count()函数返回一个Bigint类型,参见
http://www.postgresql.org/docs/9.2/static/functions-aggregate.html
Bigint是8个字节
见http://www.postgresql.org/docs/9.2/static/datatype-numeric.html
Haskell int是~2 ** 29,这意味着它是一个4字节的整数.
http://www.haskell.org/ghc/docs/latest/html/libraries/base/Data-Int.html
然后它的正常情况是Postgresql或其API不会进行精确的隐式向下转换.
因此,使用Haskell int64类型或转换计数(*)为整数.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。