summaryrefslogtreecommitdiff
path: root/platform/default/mbgl/storage/offline_database.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/default/mbgl/storage/offline_database.cpp')
-rw-r--r--platform/default/mbgl/storage/offline_database.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/platform/default/mbgl/storage/offline_database.cpp b/platform/default/mbgl/storage/offline_database.cpp
index 7516185f27..79bc3c8f27 100644
--- a/platform/default/mbgl/storage/offline_database.cpp
+++ b/platform/default/mbgl/storage/offline_database.cpp
@@ -79,8 +79,11 @@ void OfflineDatabase::initialize() {
void OfflineDatabase::handleError(const mapbox::sqlite::Exception& ex, const char* action) {
if (ex.code == mapbox::sqlite::ResultCode::NotADB ||
- ex.code == mapbox::sqlite::ResultCode::Corrupt) {
- // Corrupted; delete database so that we have a clean slate for the next operation.
+ ex.code == mapbox::sqlite::ResultCode::Corrupt ||
+ (ex.code == mapbox::sqlite::ResultCode::ReadOnly &&
+ ex.extendedCode == mapbox::sqlite::ExtendedResultCode::ReadOnlyDBMoved)) {
+ // The database was corruped, moved away, or deleted. We're going to start fresh with a
+ // clean slate for the next operation.
Log::Error(Event::Database, static_cast<int>(ex.code), "Can't %s: %s", action, ex.what());
try {
removeExisting();