编辑:我现在对出了什么问题有了更好的了解。当我以普通的 old 执行该查询时psql
,我得到以下结果:
lwm@verbos
=# SELECT * FROM gerund LIMIT1;
infinitive │ gerund │ gerund_english
────────────┼─────────────┼────────────────
abandonar │ abandonando │ abandoning
那么,我要找回 3 个字符串?但是,我说我要回来了IO [Only String]
。我敢肯定这是我的类型签名在这里搞砸了......
我正在尝试使用postgresql-simple
带有Haskell
. 我的代码与我看到的错误一起粘贴在下面。有人有什么想法吗?
我的数据库被调用verbos
,在其中,我有一个名为gerund
. 我能够运行query_
包含:conn "SELECT 2 + 2"
并且工作正常。我还可以使用默认信息指定的默认数据连接到我的数据库(密码='postgres':(psql -h localhost -p 5432 -U postgres
来自文档[ 1 ])
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Control.Monad
import Control.Applicative
import Database.PostgreSQL.Simple
main = do
conn <- connect defaultConnectInfo {
connectPassword = "postgres",
connectDatabase = "verbos"
}
mapM_ print =<< (query_ conn "SELECT * FROM gerund LIMIT 1" :: IO [Only String])
给我以下错误:
ConversionFailed {errSQLType = "3 个值:[(Basic {typoid = Oid 1043, typcategory = 'S', typdelim = ',', typname = \"varchar\"},Just \"abandonar\"),(Basic {typoid = Oid 1043, typcategory = 'S', typdelim = ',', typname = \"varchar\"}, 只是 \"abandonando\"),(基本 {typoid = Oid 1043, typcategory = 'S', typdelim = ' ,', typname = \"varchar\"},Just \"abandoning\")]", errSQLTableOid = Nothing, errSQLField = "", errHaskellType = "1 slot in target type", errMessage = "不匹配的列数在目标类型中转换和编号"}