Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Getting a DatabaseException on startup: (database is locked (code 5 SQLITE_BUSY[5]))

Open
#429 2 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Needs clarification
Activity status
Stale
Tech stack
dart, flutter, sqlite

Research direction

Reproduce the first-load failure on Android with version 3.3.1, then start from CacheObjectProvider.open in package:flutter_cache_manager/src/storage/cache_info_repositories/cache_object_provider.dart and CacheStore._getCacheDataFromDatabase in cache_store.dart. Trace the BEGIN EXCLUSIVE path through sqflite and determine why the cache database is locked during startup; done means the first load opens the cache without an unhandled SQLITE_BUSY exception.

Written by the indexing model from the issue text.

Description

🐛 Bug Report

Hi, I'm having a DatabaseException on the application's first load, when it tries to setup the database for the cache. The cache stays unusable for this first load, but the second time the application is opened it can work this out and then it will continue working every time.

This is a logcat output from Android:

09-05 16:18:26.154 19280 19371 I flutter : error DatabaseException(database is locked (code 5 SQLITE_BUSY[5])) sql 'BEGIN EXCLUSIVE' args [] during open, closing...
09-05 16:18:26.165 19280 19371 E flutter : [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: DatabaseException(database is locked (code 5 SQLITE_BUSY[5])) sql 'BEGIN EXCLUSIVE' args []
09-05 16:18:26.165 19280 19371 E flutter : #0      wrapDatabaseException (package:sqflite/src/exception_impl.dart:11)
09-05 16:18:26.165 19280 19371 E flutter : <asynchronous suspension>
09-05 16:18:26.165 19280 19371 E flutter : #1      SqfliteDatabaseMixin.txnSynchronized (package:sqflite_common/src/database_mixin.dart:465)
09-05 16:18:26.165 19280 19371 E flutter : <asynchronous suspension>
09-05 16:18:26.165 19280 19371 E flutter : #2      SqfliteDatabaseMixinExt.txnBeginTransaction (package:sqflite_common/src/database_mixin.dart:353)
09-05 16:18:26.165 19280 19371 E flutter : <asynchronous suspension>
09-05 16:18:26.165 19280 19371 E flutter : #3      SqfliteDatabaseMixin.beginTransaction (package:sqflite_common/src/database_mixin.dart:719)
09-05 16:18:26.165 19280 19371 E flutter : <asynchronous suspension>
09-05 16:18:26.165 19280 19371 E flutter : #4      SqfliteDatabaseMixinExt._txnTransaction (package:sqflite_common/src/database_mixin.dart:330)
09-05 16:18:26.165 19280 19371 E flutter : <asynchronous suspension>
09-05 16:18:26.165 19280 19371 E flutter : #5      BasicLock.synchronized (package:synchronized/src/basic_lock.dart:33)
09-05 16:18:26.165 19280 19371 E flutter : <asynchronous suspension>
09-05 16:18:26.165 19280 19371 E flutter : #6      SqfliteDatabaseMixin.txnSynchronized (package:sqflite_common/src/database_mixin.dart:490)
09-05 16:18:26.165 19280 19371 E flutter : <asynchronous suspension>
09-05 16:18:26.165 19280 19371 E flutter : #7      SqfliteDatabaseMixin.doOpen (package:sqflite_common/src/database_mixin.dart:939)
09-05 16:18:26.165 19280 19371 E flutter : <asynchronous suspension>
09-05 16:18:26.165 19280 19371 E flutter : #8      SqfliteDatabaseOpenHelper.openDatabase (package:sqflite_common/src/database.dart:46)
09-05 16:18:26.165 19280 19371 E flutter : <asynchronous suspension>
09-05 16:18:26.165 19280 19371 E flutter : #9      SqfliteDatabaseFactoryMixin.openDatabase.<anonymous closure> (package:sqflite_common/src/factory_mixin.dart:110)
09-05 16:18:26.165 19280 19371 E flutter : <asynchronous suspension>
09-05 16:18:26.165 19280 19371 E flutter : #10     ReentrantLock.synchronized.<anonymous closure> (package:synchronized/src/reentrant_lock.dart:37)
09-05 16:18:26.165 19280 19371 E flutter : <asynchronous suspension>
09-05 16:18:26.165 19280 19371 E flutter : #11     BasicLock.synchronized (package:synchronized/src/basic_lock.dart:33)
09-05 16:18:26.165 19280 19371 E flutter : <asynchronous suspension>
09-05 16:18:26.165 19280 19371 E flutter : #12     CacheObjectProvider.open (package:flutter_cache_manager/src/storage/cache_info_repositories/cache_object_provider.dart:30)
09-05 16:18:26.165 19280 19371 E flutter : <asynchronous suspension>
09-05 16:18:26.165 19280 19371 E flutter : #13     CacheStore._getCacheDataFromDatabase (package:flutter_cache_manager/src/cache_store.dart:112)
09-05 16:18:26.165 19280 19371 E flutter : <asynchronous suspension>

At the moment I only tried this on Android, and I'm using version 3.3.1.

My first guess is that some other library may be using Sqlite at the same time, or some other thing like that, but anyways that doesn't seems to be a good reason to crash. Is this issue known?

Thank you

Dominant language
Dart
Stars
810
Forks
510
Avg merge
2d 2h
Merged PRs (30d)
11

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Baseflow/flutter_cache_manager

All issues in Baseflow/flutter_cache_manager

Similar issues

More Dart issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.