使用Database.ODBC.describeTable时获取可转换的异常

时间:2015-11-03 20:52:51

标签: haskell hdbc

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

我决定使用带有ODBC的HDBC,但是我遇到了这个意想不到的异常。重现:

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更喜欢为colSize返回Nothing抛出异常。

这引出了几个问题:

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

0 个答案:

没有答案