我的架构:
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"