与Database.PostgreSQL.Simple的count(*)类型兼容性错误?

前端之家收集整理的这篇文章主要介绍了与Database.PostgreSQL.Simple的count(*)类型兼容性错误?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
错误
*** 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类型或转换计数(*)为整数.

原文链接:/postgresql/452766.html

猜你在找的Postgre SQL相关文章