HDBC ODBC fetchAllRows возвращает SqlError - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь заставить простую программу на Haskell общаться с базой данных MySQL.Программа собирается правильно, но когда я запускаю программу, я получаю около половины выходных данных из первого запроса, а затем следующую ошибку, которую мне трудно интерпретировать:

SqlError {seState = "[]", seNativeError = -2, seErrorMsg = "sqlFetch: []"}

Программа извлекает строки с помеченными текстовыми полями из изображений из базы данных MySQL и анализирует их в фиксированный формат.

query :: Option -> String -> IO SupplementalFacts
query op queryText = do
  conn <- connectODBC "DSN=imgparse"
  stmt <- prepare conn queryText
  execute stmt [] >> fetchRow stmt
  handle op stmt where
    unSQLString x = fromSql x :: String
    unSQLInteger x = fromSql x :: Integer
    unSQLRow (x:xs) = Ocr (unSQLString x) (locatize $ unSQLInteger <$> xs)
    handle option statement
      | option == Parsed = (fetchAllRows statement) >>= (\rows -> return $ parseTable $ unSQLRow <$> rows)


translit :: URL -> IO SupplementalFacts
translit u = query Parsed $ "SELECT description, x_1, y_1, x_3, y_3 FROM ocr_json_response where pic_url='" ++ u ++ "'"

parseTable :: [OcrRow] -> SupplementalFacts
...

с приложением / Main.hs ...

main :: IO ()
main = do
       translit url1 >>= (\x -> putStrLn $ show x)
       translit url2 >>= (\x -> putStrLn $ show x)
       translit url3 >>= (\x -> putStrLn $ show x)
       translit url4 >>= (\x -> putStrLn $ show x)
       return ()

Main.hs в настоящее время только что настроен для тестирования выполнения примера ввода URL.

Надеюсь, этого достаточно.Я также все еще очень "взбираюсь на гору Хаскелла", поэтому не стесняйтесь вносить любые предложения и в код.

...