Baseflow / Baseflow/flutter_cache_manager
Getting a DatabaseException on startup: (database is locked (code 5 SQLITE_BUSY[5]))
- Ngôn ngữ chính
- Dart
- Star
- 809
- Fork
- 510
- Merge trung bình
- 6 phút
- Pull request đã merge (30 ngày)
- 1
Mô tả
## 🐛 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 :
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 :
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 :
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 :
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 :
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 :
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 :
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 :
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 :
09-05 16:18:26.165 19280 19371 E flutter : #9 SqfliteDatabaseFactoryMixin.openDatabase. (package:sqflite_common/src/factory_mixin.dart:110)
09-05 16:18:26.165 19280 19371 E flutter :
09-05 16:18:26.165 19280 19371 E flutter : #10 ReentrantLock.synchronized. (package:synchronized/src/reentrant_lock.dart:37)
09-05 16:18:26.165 19280 19371 E flutter :
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 :
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 :
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 :
```
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
Hướng dẫn đóng góp
Hướng nghiên cứu
Tái hiện lỗi tải lần đầu trên Android với phiên bản 3.3.1, sau đó bắt đầu từ CacheObjectProvider.open trong package:flutter_cache_manager/src/storage/cache_info_repositories/cache_object_provider.dart và CacheStore._getCacheDataFromDatabase trong cache_store.dart. Theo dõi đường đi của BEGIN EXCLUSIVE qua sqflite và xác định lý do cơ sở dữ liệu bộ nhớ đệm bị khóa trong quá trình khởi động; được xem là hoàn thành khi lần tải đầu tiên mở được bộ nhớ đệm mà không có ngoại lệ SQLITE_BUSY không được xử lý.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- dart, flutter, sqlite
- Lĩnh vực
- databases, mobile-dev
- Loại issue
- Lỗi
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Cần làm rõ
- Mức phù hợp với người mới
- 35/100