編集:何がうまくいかないのかがよくわかりました。そのクエリをプレーンな古い形式で実行するとpsql
、次の結果が得られます。
lwm@verbos
=# SELECT * FROM gerund LIMIT1;
infinitive │ gerund │ gerund_english
────────────┼─────────────┼────────────────
abandonar │ abandonando │ abandoning
それで、私は3本の弦を取り戻していますか?しかし、私は戻ってきていると言いますIO [Only String]
。物事を台無しにしているのは、ここでの私の型シグネチャであると確信しています...
postgresql-simple
でライブラリを使用して簡単なクエリを作成しようとしていますHaskell
。私のコードは、表示されているエラーとともに以下に貼り付けられます。誰でもアイデアはありますか?
私のデータベースは呼び出されverbos
、その中に というテーブルがありますgerund
。query_
次を含むa を実行できconn "SELECT 2 + 2"
ます。これは正常に動作します。また、デフォルト情報で指定されたデフォルト データでデータベースに接続することもできます (password = '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 \"放棄\"),(Basic {typoid = Oid 1043, typcategory = 'S', typdelim = ',', typname = \"varchar\"},Just \"abandonando\"),(Basic {typoid = Oid 1043, typcategory = 'S', typdelim = ' ,', typname = \"varchar\"},Just \"abandoning\")]", errSQLTableOid = Nothing, errSQLField = "", errHaskellType = "対象の型に 1 スロット", errMessage = "列数の不一致ターゲットタイプの変換と数値"}