diff --git a/Database/Persist/Sqlite.hs b/Database/Persist/Sqlite.hs
--- a/Database/Persist/Sqlite.hs
+++ b/Database/Persist/Sqlite.hs
@@ -1,5 +1,7 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE FlexibleContexts #-}
 -- | A sqlite backend for persistent.
 module Database.Persist.Sqlite
     ( withSqlitePool
@@ -20,19 +22,26 @@
 import Data.List (intercalate)
 import Data.IORef
 import qualified Data.Map as Map
+#if MIN_VERSION_monad_control(0, 3, 0)
+import Control.Monad.Trans.Control (MonadBaseControl, control)
+import qualified Control.Exception as E
+#define MBCIO MonadBaseControl IO
+#else
 import Control.Monad.IO.Control (MonadControlIO)
 import Control.Exception.Control (finally)
+#define MBCIO MonadControlIO
+#endif
 import Data.Text (Text, pack, unpack)
 import Data.Neither (MEither (..), meither)
 import Data.Object
 
-withSqlitePool :: MonadControlIO m
+withSqlitePool :: (MonadIO m, MBCIO m)
                => Text
                -> Int -- ^ number of connections to open
                -> (ConnectionPool -> m a) -> m a
 withSqlitePool s = withSqlPool $ open' s
 
-withSqliteConn :: MonadControlIO m => Text -> (Connection -> m a) -> m a
+withSqliteConn :: (MonadIO m, MBCIO m) => Text -> (Connection -> m a) -> m a
 withSqliteConn = withSqlConn . open'
 
 open' :: Text -> IO Connection
@@ -88,7 +97,8 @@
     Sqlite.Done <- Sqlite.step stmt
     return ()
 
-withStmt' :: MonadControlIO m
+withStmt'
+          :: (MBCIO m, MonadIO m)
           => Sqlite.Statement
           -> [PersistValue]
           -> (RowPopper m -> m a)
@@ -270,3 +280,14 @@
     []       -> MLeft $ concat ["Invalid value for ", name, ": ", s]
   where
     s = unpack t
+
+#if MIN_VERSION_monad_control(0, 3, 0)
+finally :: MonadBaseControl IO m
+        => m a -- ^ computation to run first
+        -> m b -- ^ computation to run afterward (even if an exception was raised)
+        -> m a
+finally a sequel = control $ \runInIO ->
+                     E.finally (runInIO a)
+                               (runInIO sequel)
+{-# INLINABLE finally #-}
+#endif
diff --git a/persistent-sqlite.cabal b/persistent-sqlite.cabal
--- a/persistent-sqlite.cabal
+++ b/persistent-sqlite.cabal
@@ -1,5 +1,5 @@
 name:            persistent-sqlite
-version:         0.6.2
+version:         0.6.2.1
 license:         BSD3
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
@@ -21,7 +21,7 @@
                    , bytestring              >= 0.9.1     && < 0.10
                    , transformers            >= 0.2.1     && < 0.3
                    , persistent              >= 0.6.3     && < 0.7
-                   , monad-control           >= 0.2       && < 0.3
+                   , monad-control           >= 0.2       && < 0.4
                    , containers              >= 0.2       && < 0.5
                    , text                    >= 0.7       && < 0.12
                    , data-object             >= 0.3       && < 0.4
