加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-13 18:05:28 所属栏目:百科 来源:网络整理
导读:错误是 *** Exception: Incompatible {errSQLType = "int8",errHaskellType = "Int",errMessage = "types incompatible"} 看起来查询中count(*)返回的任何值都必须转换为Integer而不是Int.如果我将这些特定变量更改为Integer类型,则查询可以正常工作. 但是在
错误是
*** 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类型或转换计数(*)为整数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读