Ошибка пользователя (ошибка соответствия шаблона в выражении do) с PostgreSQL.Simple
Моя схема:
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"