Haskell(バージョン6.10.3)とHDBCを使用してMySQLデータベースに接続しようとしています。私はHaskell ODBCを使ってこれを行うことにしました。私はHDBC(2.1.1)とHDBC-ODBC(2.1.0.0)をインストールするためにCabalを使いました。 MySQL ODBCドライバ(5.1.5)をダウンロードしてインストールしました。私はmacportsを使ってunixODBC(2.2.14_1)をインストールしました。このすべてはMac OS X(10.5.8)の上にあります。Haskell、HDBC、ODBC、MySQL、Mac OS X
私はほとんどこのページの指示を使用していますhttp://en.wikibooks.org/wiki/Haskell/Database。この時点で:
"#odbcinst.iniファイル($ ODBC_HOME/etc /)およびデータソースを$ HOME/.odbc.iniに追加します。
macports版のunixODBCは、/ opt/local /にあるすべてのものをインストールするようです。私はodbcinst.iniを/ opt/local/etcに入れて、私のホームディレクトリに.odbc.iniを作成しました。このようなものがあります(UID対USERNAMEとPWDを比較したことに注意してくださいPASSWORD):私はこのHaskellのプログラムを書かれ、コンパイルした
[ODBC Data Sources] myodbc = MySQL ODBC 5.1 Driver [ODBC] Trace = 0 TraceAutoStop = 0 TraceFile = TraceLibrary = [myodbc] Driver = /usr/local/lib/libmyodbc5.so DATABASE = [hidden] DESCRIPTION = [hidden] SERVER = localhost PORT = 3306 UID = [hidden] PWD = [hidden] PASSWORD = [hidden] USER = [hidden]
そして:
import Database.HDBC.ODBC import Database.HDBC import System main = do args <- getArgs c <- connectODBC (args!!0) tables <- getTables c mapM_ putStrLn $ tables
私は "DSN = MyODBCを" それエラーのDSNを試すとき:
Database: SqlError {seState = "[\"HY000\"]", seNativeError = -1, seErrorMsg = "connectODBC/sqlDriverConnect: [\"1045: [unixODBC][MySQL][ODBC 5.1 Driver]Access denied for user 'jamie'@'localhost' (using password: YES)\"]"}
しかし、 "DSN = myodbc; UID = [hidden]; PWのDSNを試してみるとD = [hidden] "とすると、データベース内のすべてのテーブルが一覧表示されます。
これはhttp://software.complete.org/software/issues/show/106とぼんやりと似ていますが、runghcをコンパイルするのではなく、 ".so/.DLLをロードできません:odbc "、私のテストのすべてはコンパイルされたバージョンで行われています。 –