diff --git a/internal/sqladapter/database.go b/internal/sqladapter/database.go
index e04b585063af1b469d1491ec180f0bae05f17067..ae3c1b3efe00a591a1bf6d4fd1253bfa111b333a 100644
--- a/internal/sqladapter/database.go
+++ b/internal/sqladapter/database.go
@@ -125,6 +125,10 @@ func (d *BaseDatabase) Ping() error {
 
 // Close terminates the current database session.
 func (d *BaseDatabase) Close() error {
+	defer func() {
+		d.sess = nil
+		d.tx = nil
+	}()
 	if d.sess != nil {
 		if d.tx != nil && !d.tx.Done() {
 			d.tx.Rollback()
diff --git a/internal/sqlutil/result/result.go b/internal/sqlutil/result/result.go
index a508ac5bdec21651bd705fc39f4b81c8642ce26b..61df81fab75d888b3f6d3a2c8e900ff583735d13 100644
--- a/internal/sqlutil/result/result.go
+++ b/internal/sqlutil/result/result.go
@@ -147,9 +147,12 @@ func (r *Result) Count() (uint64, error) {
 	}{}
 
 	q := r.buildSelect()
-	q.Columns(db.Raw{"count(1) AS _t"}).Limit(1)
+	q.Columns(db.Raw{"count(1) AS _t"}).Limit(1).OrderBy(nil)
 
 	if err := q.Iterator().One(&counter); err != nil {
+		if err == db.ErrNoMoreRows {
+			return 0, nil
+		}
 		return 0, err
 	}
 
diff --git a/sqlite/database.go b/sqlite/database.go
index 345d3e5b4aaf0d72202590992a16de861c219881..c2de9e588add707e43f5b754529d8774776ec02f 100644
--- a/sqlite/database.go
+++ b/sqlite/database.go
@@ -123,7 +123,7 @@ func (d *database) Use(name string) (err error) {
 }
 
 func (d *database) Close() error {
-	if d.BaseDatabase != nil {
+	if d.Session() != nil {
 		if atomic.AddInt32(&fileOpenCount, -1) < 0 {
 			return errors.New(`Close() without Open()?`)
 		}