Ошибка пользователя (ошибка соответствия шаблона в выражении 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"

0 ответов

Другие вопросы по тегам