diff --git a/Database/Persist/Sqlite.hs b/Database/Persist/Sqlite.hs
--- a/Database/Persist/Sqlite.hs
+++ b/Database/Persist/Sqlite.hs
@@ -2,6 +2,7 @@
 {-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE ScopedTypeVariables #-}
 -- | A sqlite backend for persistent.
 module Database.Persist.Sqlite
     ( withSqlitePool
@@ -37,7 +38,7 @@
 import Control.Monad (mzero)
 import Data.Aeson
 import qualified Data.Text as T
-import qualified Data.Conduit as C
+import Data.Conduit
 import qualified Data.Conduit.List as CL
 import Control.Applicative
 
@@ -66,7 +67,7 @@
         , migrateSql = migrate'
         , begin = helper "BEGIN"
         , commitC = helper "COMMIT"
-        , rollbackC = helper "ROLLBACK"
+        , rollbackC = ignoreExceptions . helper "ROLLBACK"
         , escapeName = escape
         , noLimit = "LIMIT -1"
         }
@@ -75,6 +76,7 @@
         stmt <- getter t
         execute stmt []
         reset stmt
+    ignoreExceptions = E.handle (\(_ :: E.SomeException) -> return ())
 
 prepare' :: Sqlite.Connection -> Text -> IO Statement
 prepare' conn sql = do
@@ -108,32 +110,35 @@
     return ()
 
 withStmt'
-          :: C.MonadResource m
+          :: MonadResource m
           => Sqlite.Statement
           -> [PersistValue]
-          -> C.Source m [PersistValue]
-withStmt' stmt vals = C.sourceIO
+          -> Source m [PersistValue]
+withStmt' stmt vals = bracketP
     (Sqlite.bind stmt vals >> return stmt)
     Sqlite.reset
-    pull
+    (const pull)
   where
-    pull _ = liftIO $ do
-        x <- Sqlite.step stmt
+    pull = do
+        x <- liftIO $ Sqlite.step stmt
         case x of
-            Sqlite.Done -> return C.IOClosed
+            Sqlite.Done -> return ()
             Sqlite.Row -> do
                 cols <- liftIO $ Sqlite.columns stmt
-                return $ C.IOOpen cols
+                yield cols
+                pull
 showSqlType :: SqlType -> String
 showSqlType SqlString = "VARCHAR"
 showSqlType SqlInt32 = "INTEGER"
-showSqlType SqlInteger = "INTEGER"
+showSqlType SqlInt64 = "INTEGER"
 showSqlType SqlReal = "REAL"
 showSqlType SqlDay = "DATE"
 showSqlType SqlTime = "TIME"
+showSqlType SqlDayTimeZoned = "TIMESTAMP"
 showSqlType SqlDayTime = "TIMESTAMP"
 showSqlType SqlBlob = "BLOB"
 showSqlType SqlBool = "BOOLEAN"
+showSqlType (SqlOther t) = T.unpack t
 
 migrate' :: PersistEntity val
          => [EntityDef]
@@ -144,8 +149,8 @@
     let (cols, uniqs) = mkColumns allDefs val
     let newSql = mkCreateTable False def (cols, uniqs)
     stmt <- getter "SELECT sql FROM sqlite_master WHERE type='table' AND name=?"
-    oldSql' <- C.runResourceT
-             $ withStmt stmt [PersistText $ unDBName table] C.$$ go
+    oldSql' <- runResourceT
+             $ withStmt stmt [PersistText $ unDBName table] $$ go
     case oldSql' of
         Nothing -> return $ Right [(False, newSql)]
         Just oldSql ->
@@ -171,7 +176,7 @@
              -> IO [(Bool, Sql)]
 getCopyTable allDefs getter val = do
     stmt <- getter $ pack $ "PRAGMA table_info(" ++ escape' table ++ ")"
-    oldCols' <- C.runResourceT $ withStmt stmt [] C.$$ getCols
+    oldCols' <- runResourceT $ withStmt stmt [] $$ getCols
     let oldCols = map DBName $ filter (/= "id") oldCols' -- need to update for table id attribute ?
     let newCols = map cName cols
     let common = filter (`elem` oldCols) newCols
diff --git a/Database/Sqlite.hs b/Database/Sqlite.hs
--- a/Database/Sqlite.hs
+++ b/Database/Sqlite.hs
@@ -33,7 +33,7 @@
 import qualified Data.ByteString.Internal as BSI
 import Foreign
 import Foreign.C
-import Database.Persist.Store (PersistValue (..), listToJSON, mapToJSON)
+import Database.Persist.Store (PersistValue (..), listToJSON, mapToJSON, ZT (ZT))
 import Data.Text (Text, pack, unpack)
 import Data.Text.Encoding (encodeUtf8, decodeUtf8With)
 import Data.Text.Encoding.Error (lenientDecode)
@@ -341,6 +341,7 @@
             PersistDay d -> bindText statement parameterIndex $ pack $ show d
             PersistTimeOfDay d -> bindText statement parameterIndex $ pack $ show d
             PersistUTCTime d -> bindText statement parameterIndex $ pack $ show d
+            PersistZonedTime (ZT d) -> bindText statement parameterIndex $ pack $ show d
             PersistList l -> bindText statement parameterIndex $ listToJSON l
             PersistMap m -> bindText statement parameterIndex $ mapToJSON m
             PersistObjectId _ -> P.error "Refusing to serialize a PersistObjectId to a SQLite value"
diff --git a/cbits/sqlite3.c b/cbits/sqlite3.c
# file too large to diff: cbits/sqlite3.c
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.9.0.2
+version:         1.0.0
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
@@ -20,12 +20,12 @@
     build-depends:   base                    >= 4         && < 5
                    , bytestring              >= 0.9.1
                    , transformers            >= 0.2.1     && < 0.4
-                   , persistent              >= 0.9       && < 0.10
+                   , persistent              >= 1.0       && < 1.1
                    , monad-control           >= 0.2       && < 0.4
                    , containers              >= 0.2
                    , text                    >= 0.7       && < 1
                    , aeson                   >= 0.5
-                   , conduit                 >= 0.4       && < 0.5
+                   , conduit                 >= 0.5       && < 0.6
     exposed-modules: Database.Sqlite
                      Database.Persist.Sqlite
     ghc-options:     -Wall
