Hi Björn, thanks for your hint, I finally made HDBC-odbc and even hsql-mysql run. Below is a step-by-step manual how to install both packages on windows for people having the same troubles I had. I used GHC 6.8.3. MySQL from HDBC-odbc ******************** 1.) Install package time-1.1.2.4. 2.) Download package convertible-1.0.5. In convertible.cabal find the line Build-Depends: ..., time>=1.1.2.4, ... and replace it by Build-Depends: ..., time>=1.1.2.4 && <1.1.3, ... Now the installation shouldn't fail with a compilation error. 3.) Download package HDBC-2.1.1, modfiy HDBC.cabal in the same way as in 2.) and install the package. 4.) Install package HDBC-odbc-2.1.0.0. 5.) There still was one thing I didn't know that made my example fail with an exception. You need to install a MySQL ODBC connector for Windows (available from dev.mysql.com). 6) Now the following example should return a list of all table names in the database: import Database.HDBC import Database.HDBC.ODBC main :: IO () main = do conn <- connectODBC "DRIVER={MySQL ODBC 5.1 Driver}; SERVER=my_server; DATABASE=my_database; UID=my_username; PASSWORD=my_password" qs <- quickQuery' conn "show tables" [] mapM_ (\[SqlByteString table] -> print table) qs disconnect conn (There's also a getTables function but it always returns an empty list on my system, I don't know why). MySQL from hsql-mysql ********************* 1.) Install package hsql-1.7.1. 2.) Download package hsql-mysql-1.7.1. In hsql-mysql.cabal find the line include-dirs: Database/HSQL, /usr/include/mysql and replace it by include-dirs: Database/HSQL Also find the line extra-lib-dirs: /usr/lib/mysql and remove it. 3.) Do a runghc Setup configure --extra-include-dirs=<path_to_mysql>/include/ --extra-lib-dirs=<path_to_mysql>/lib/opt/ runghc Setup build runghc Setup install where <path_to_mysql> is the path to your MySQL server installation. I'm using MySQL Server 5.1, so maybe you have to adjust the include or lib path. 4.) Now you should be able to compile: import Database.HSQL import Database.HSQL.MySQL main :: IO () main = do conn <- connect "my_server" "my_database" "my_username" "my_password" ts <- tables conn mapM_ print ts disconnect conn 5.) Execute the main function. If you get an error like Loading package hsql-mysql-1.7.1 ... can't load .so/.DLL for: mysqlclient (addDLL: unknown error) go to <path_to_mysql>/bin where a file "libmySQL.dll" should reside. Copy this file to "mysqlclient.dll" and try executing the main function again. Now you should get a list of all tables in the database. Installing HDBC-mysql still failed due to a missing file "mysql_config" which seems to be available only for linux systems. Best wishes, Maciej W dniu 19.06.2009 09:31 Björn Peemöller pisze:
Maciej Podgurski schrieb:
So I switched to HDBC-2.1.1 and got the next compile error:
Building convertible-1.0.5...
Data/Convertible/Instances/Num.hs:671:0: warning: no newline at end of file [...] [5 of 8] Compiling Data.Convertible.Instances.C ( Data/Convertible/Instances/C.hs, dist\build/Data/C onvertible/Instances/C.o ) [6 of 8] Compiling Data.Convertible.Instances.Time ( Data/Convertible/Instances/Time.hs, dist\build/ Data/Convertible/Instances/Time.o )
Data/Convertible/Instances/Time.hs:64:0: Duplicate instance declarations: instance Typeable NominalDiffTime -- Defined at Data/Convertible/Instances/Time.hs:(64,0)-(65,42) instance Typeable NominalDiffTime -- Defined in time-1.1.3:Data.Time.Clock.UTC
Data/Convertible/Instances/Time.hs:67:0: Duplicate instance declarations: instance Typeable UTCTime -- Defined at Data/Convertible/Instances/Time.hs:(67,0)-(68,34) instance Typeable UTCTime -- Defined in time-1.1.3:Data.Time.Clock.UTC
Hi Maciej,
this is quite easy to fix (although a little bit dirty). The problem is that time-1.1.3 now defines some Typeable instances which time-1.1.2.4 did not and which are therefore defined in convertible, too. I don't know a general fix to the problem, but you can either
- download the convertible package and comment out the two instance declarations as shown in the error message and then cabal install it - install from Hackage with additional constraint: cabal install convertible --constraint=time<1.1.3
I hope this will help you get HDBC running.
Cheers, Björn
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe