diff --git a/internal/sqladapter/database.go b/internal/sqladapter/database.go
index ed26ce189e2365b485b87659a385c7591d041383..27cf5b3f7d190da140091e817ca72416e7bf4ef4 100644
--- a/internal/sqladapter/database.go
+++ b/internal/sqladapter/database.go
@@ -187,11 +187,14 @@ func (d *database) Close() error {
 		d.cachedStatements.Clear() // Closes prepared statements as well.
 
 		tx := d.Transaction()
-		if tx != nil && !tx.Committed() {
-			tx.Rollback()
+		if tx == nil {
+			// Not within a transaction.
+			return d.sess.Close()
 		}
 
-		return d.sess.Close()
+		if !tx.Committed() {
+			tx.Rollback()
+		}
 	}
 	return nil
 }