3

首先,我是一名 Haskell 新手,在第一个真正的“Haskell 项目”中使用 Haskell 取得了巨大飞跃。简而言之,它是关于从不同的数据源收集模式信息。

我决定将 HDBC 与 ODBC 一起使用,但我遇到了这个意外的异常。重现:

import Database.HDBC
import Database.HDBC.ODBC

main :: IO ()
main = do
    ioc <- connectODBC "Driver={MySQL};Port=3306;Database=northwind;User=root;Host=localhost"
    x <- describeTable ioc "Categories"
    putStrLn $ show (x !! 3)

执行时发生此异常:

$ runghc problem-hdbc.hs 
problem-hdbc.hs: Convertible: error converting source data -1 of type Int32 to type Word64: Input value outside of bounds: (0,18446744073709551615)

相关数据库是 Microsoft 的示例数据库Northwind。表中第三列的Categories类型为longblob

我可以看到那show是打印colSize,它是类型的Maybe Int。我不明白为什么 ODBC 更喜欢抛出异常而不是返回NothingcolSize。

这让我想到了几个问题:

  • 这是一个错误吗?
  • 如果没有,我该怎么做才能解决这个问题?
  • 使用 时的最佳实践是什么Convertible
4

0 回答 0