我的架构:
CREATE TABLE IF NOT EXISTS feed (
id SERIAL PRIMARY KEY CHECK (id > 0),
name TEXT NOT NULL,
url TEXT NOT NULL
);
我的代码:
{-# LANGUAGE OverloadedStrings #-}
import Database.PostgreSQL.Simple
hello :: IO String
hello = do
conn <- connectPostgreSQL ""
[Only i] <- query_ conn "SELECT url FROM feed WHERE id = 1"
return i
main :: IO ()
main = hello >>= print
我的错误:
user error (Pattern match failure in do expression at src/Main.hs:8:3-10)
我的问题:
更新:我连接到错误的数据库,因此我对结果集的假设是错误的。它包含零行而不是一行,因此它尝试将[]
与[Only i]
匹配。我通过在ghci中执行查询找到了它:
:set -XOverloadedStrings
import Database.PostgreSQL.Simple
do; conn <- connectPostgreSQL "" ;query_ conn "SELECT url FROM feed WHERE id = 1"