我无法理解我尝试连接到MS Access数据库文件
时遇到的错误λ: :m + Database.HDBC Database.HDBC.ODBC
λ: let connectionString = "DBQ=c:\Users\user\Desktop\Database1.accdb;Driver={Microsoft Access Driver (*.mdb, *.accdb)};"
λ: conn <- connectODBC connectionString
*** Exception: SqlError {seState = "[]", seNativeError = -1, seErrorMsg = "sqlGetInfo SQL_TXN_CAPABLE: []"}
我得到了你,哥们,即使它可能毫无用处!
我只是点击了这个确切的问题,然后分叉HDBC-odbc
来修复它。简而言之:他们"愚蠢地"信任SQLGetInfo
的MSDN文档,该文档声称BufferLength
参数在非弦乐信息类型中被忽略或无忽略(例如,查询SQL_TXN_CAPABLE
时使用的SQLUSMALLINT
)。
好吧,至少在MS Access驱动程序的情况下,事实并非如此。我对查询代码进行了调整以实际通过sizeof(SQLUSMALLINT)
而不是零,而且事情似乎在起作用。
可以在https://github.com/derrickturk/hdbc-odbc上使用更新的HDBC-odbc
。我也打算也提出拉动请求,但我不确定是否仍保持HDBC-odbc
。
在任何情况下,如果使用stack
,它就像在stack.yaml
中更改extra-deps
一样容易,以包括(替换任何以前的HDBC-odbc
来源):
额外deps: -git:https://github.com/derrickturk/hdbc-odbc.git 提交:99CBEFB16DEFC9CE6DE77C1434207A78B5C3C365