J'essaie d'utiliser Haskell (version 6.10.3) et HDBC pour me connecter à une base de données MySQL. J'ai choisi de le faire avec Haskell ODBC. J'ai utilisé cabal pour installer HDBC (2.1.1) et HDBC-ODBC (2.1.0.0). J'ai téléchargé et installé le pilote MySQL ODBC (5.1.5). J'ai utilisé macports pour installer unixODBC (2.2.14_1). Tout cela sur Mac OS X (10.5.8). J'ai surtout utilisé les instructions sur cette page http://en.wikibooks.org/wiki/Haskell/Database. À ce stade:Haskell, HDBC, ODBC, MySQL et Mac OS X
"# Ajoutez le pilote mysql au fichier odbcinst.ini (sous $ ODBC_HOME/etc /) et votre source de données dans $ HOME/.odbc.ini."
Il semble que la version macports d'unixODBC installe tout sous/opt/local /. J'ai placé un odbcinst.ini dans/opt/local/etc/et j'ai créé un .odbc.ini dans mon répertoire personnel qui ressemble à ceci (notez que j'ai expérimenté avec UID vs. USERNAME et PWD vs MOT dE PASSE):
[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]
et j'ai écrit et compilé ce programme Haskell:
import Database.HDBC.ODBC import Database.HDBC import System main = do args <- getArgs c <- connectODBC (args!!0) tables <- getTables c mapM_ putStrLn $ tables
Lorsque je tente une source de données de "DSN =" MyODBC il des erreurs avec:
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)\"]"}
Cependant, lorsque j'essaie un DSN de "DSN = myodbc; UID = [hidden]; PW D = [hidden] ", il liste toutes les tables de la base de données.
Il semble vaguement similaire à ce http://software.complete.org/software/issues/show/106 sauf que si j'essaye runghc au lieu de compiler des erreurs avec "ne peut pas charger .so/.DLL pour : odbc ", donc tous mes tests ont été avec une version compilée. –