
I found the solution to this problem: for both libraries, I had to wrap
calls in 'withRTSSignalsBlocked' from HDBC-mysql.
On 16 June 2012 00:32, William Shackleton
Hi
I'm having issues with HDBC when connecting to a remote MySQL server - certain queries cause the DB connection to be lost. The following program demonstrates this:
import Database.HDBC import Database.HDBC.ODBC main = do conn <- connectODBC "DSN=owlro" putStrLn "Connected" quickQuery' conn "SELECT time, power FROM Power LIMIT 100;" [] putStrLn "Finished query 1" quickQuery' conn "SELECT time, power FROM Power ORDER BY time;" [] putStrLn "Finished query 2" disconnect conn
The DSN points to a remote 32-bit Ubuntu 12.04 Server. The connection and queries work using mysql and isql on the command line, and the table in question contains about 1.3 million rows and only the columns id, time, power.
When I compile and run this on a 64-bit Ubuntu 12.04 PC using HDBC-2.3.1.1 and HDBC-odbc-2.3.1.0 using GHC, I get the following (unwanted) output: $ ghc Test.hs $ ./Test Connected Finished query 1 Test: SqlError {seState = "[\"08S01\"]", seNativeError = -1, seErrorMsg = "execute execute: [\"2013: [MySQL][ODBC 5.1 Driver][mysqld-5.5.24-0ubuntu0.12.04.1]Lost connection to MySQL server during query\"]"}
This program finishes (and fails) in less than half a second.
When I run it using runhaskell however, the slow second query completes: $ runhaskell Test.hs Connected Finished query 1 Finished query 2
I get the same result from ghci; this method takes about 10 seconds as expected.
Basically, simple (short) queries complete, yet long ones crash the connection. I also noticed similar results with HDBC-mysql. Any ideas on what is causing this? Thanks, Will Shackleton digitalsquid.co.uk