3

まず第一に、私は 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です。表の 3 列目のCategoriesタイプはlongblobです。

タイプのshow印刷であることがわかります。私が理解していないのは、ODBC がcolSize を返すよりも例外をスローすることを好む理由です。colSizeMaybe IntNothing

これは私にいくつかの質問を導きます:

  • これはバグですか?
  • そうでない場合、これを回避するにはどうすればよいですか?
  • を使用する際のベスト プラクティスは何Convertibleですか?
4

0 に答える 0