首先,我是一个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
时的最佳做法是什么?