diff --git a/Source/AppScaffolding/LibationScaffolding.cs b/Source/AppScaffolding/LibationScaffolding.cs index 3e1d0696..b6ee8b1e 100644 --- a/Source/AppScaffolding/LibationScaffolding.cs +++ b/Source/AppScaffolding/LibationScaffolding.cs @@ -90,6 +90,7 @@ namespace AppScaffolding { config.LoadPersistentSettings(config.LibationFiles.SettingsFilePath); } + DeleteOpenSqliteFiles(config); AudibleApiStorage.EnsureAccountsSettingsFileExists(); // @@ -102,6 +103,19 @@ namespace AppScaffolding Migrations.migrate_to_v12_0_1(config); } + /// + /// Delete shared memory and write-ahead log SQLite database files which may prevent access to the database. + /// + private static void DeleteOpenSqliteFiles(Configuration config) + { + var walFile = SqliteStorage.DatabasePath + "-wal"; + var shmFile = SqliteStorage.DatabasePath + "-shm"; + if (File.Exists(walFile)) + FileManager.FileUtility.SaferDelete(walFile); + if (File.Exists(shmFile)) + FileManager.FileUtility.SaferDelete(shmFile); + } + /// Initialize logging. Wire-up events. Run after migration public static void RunPostMigrationScaffolding(Variety variety, Configuration config) { diff --git a/Source/LibationFileManager/SqliteStorage.cs b/Source/LibationFileManager/SqliteStorage.cs index 88fae1f1..e324f9b2 100644 --- a/Source/LibationFileManager/SqliteStorage.cs +++ b/Source/LibationFileManager/SqliteStorage.cs @@ -5,7 +5,7 @@ namespace LibationFileManager public static class SqliteStorage { // not customizable. don't move to config - private static string databasePath => Path.Combine(Configuration.Instance.LibationFiles.Location, "LibationContext.db"); - public static string ConnectionString => $"Data Source={databasePath};Foreign Keys=False;Pooling=False;"; + public static string DatabasePath => Path.Combine(Configuration.Instance.LibationFiles.Location, "LibationContext.db"); + public static string ConnectionString => $"Data Source={DatabasePath};Foreign Keys=False;Pooling=False;"; } }