I have a Windows 10 host where I haven’t touched Duplicati for a longer time, but after a reboot today I saw that the tray icon disappeared pretty soon after the reboot. It was running a beta (I think 2.0.8.1) and I decided just to upgrade to the current stable version 2.1.0.4.
Now I can’t start Duplicati at all anymore.
C:\Program Files\Duplicati 2>Duplicati.GUI.TrayIcon.exe
C:\Program Files\Duplicati 2>No database encryption key was found. The database will be stored unencrypted. Supply an encryption key via the environment variable SETTINGS_ENCRYPTION_KEY or disable database encryption with the option --disable-db-encryption
Crash!
Duplicati.Library.Interface.UserInformationException: Server crashed on startup
---> System.Exception: Ein schwerwiegender Fehler trat in Duplicati auf: code = Error (1), message = System.Data.SQLite.SQLiteException (0x800007BF): SQL logic error
no such column: LogEntryID
at System.Data.SQLite.SQLite3.Prepare(SQLiteConnection cnn, String strSql, SQLiteStatement previous, UInt32 timeoutMS, String& strRemain)
at System.Data.SQLite.SQLiteCommand.BuildNextCommand()
at System.Data.SQLite.SQLiteCommand.GetStatement(Int32 index)
at System.Data.SQLite.SQLiteDataReader.NextResult()
at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteDbDataReader(CommandBehavior behavior)
at Duplicati.Server.Database.Connection.Read[T](IDbCommand cmd, Func`2 f)+MoveNext()
at System.Collections.Generic.LargeArrayBuilder`1.AddRange(IEnumerable`1 items)
at System.Collections.Generic.EnumerableHelpers.ToArray[T](IEnumerable`1 source)
at Duplicati.Server.Database.Connection.ReadFromDb[T](Func`2 f, String sql, Object[] args)
at Duplicati.Server.Database.Connection.ReadFromDb[T](String whereclause, Object[] args)
at Duplicati.Server.Database.Connection.GetNotifications()
at Duplicati.Server.Program.AdjustApplicationSettings(Dictionary`2 commandlineOptions)
at Duplicati.Server.Program.Main(String[] _args)
---> code = Error (1), message = System.Data.SQLite.SQLiteException (0x800007BF): SQL logic error
no such column: LogEntryID
at System.Data.SQLite.SQLite3.Prepare(SQLiteConnection cnn, String strSql, SQLiteStatement previous, UInt32 timeoutMS, String& strRemain)
at System.Data.SQLite.SQLiteCommand.BuildNextCommand()
at System.Data.SQLite.SQLiteCommand.GetStatement(Int32 index)
at System.Data.SQLite.SQLiteDataReader.NextResult()
at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteDbDataReader(CommandBehavior behavior)
at Duplicati.Server.Database.Connection.Read[T](IDbCommand cmd, Func`2 f)+MoveNext()
at System.Collections.Generic.LargeArrayBuilder`1.AddRange(IEnumerable`1 items)
at System.Collections.Generic.EnumerableHelpers.ToArray[T](IEnumerable`1 source)
at Duplicati.Server.Database.Connection.ReadFromDb[T](Func`2 f, String sql, Object[] args)
at Duplicati.Server.Database.Connection.ReadFromDb[T](String whereclause, Object[] args)
at Duplicati.Server.Database.Connection.GetNotifications()
at Duplicati.Server.Program.AdjustApplicationSettings(Dictionary`2 commandlineOptions)
at Duplicati.Server.Program.Main(String[] _args)
--- End of inner exception stack trace ---
at Duplicati.Server.Program.Main(String[] _args)
at Duplicati.GUI.TrayIcon.HostedInstanceKeeper.<>c__DisplayClass5_0.<.ctor>b__0(Object dummy_arg)
--- End of inner exception stack trace ---
at Duplicati.GUI.TrayIcon.HostedInstanceKeeper..ctor(String[] args)
at Duplicati.GUI.TrayIcon.Program.Main(String[] _args)
at Duplicati.GUI.TrayIcon.Net8.Program.<>c__DisplayClass0_0.<Main>b__0()
at Duplicati.Library.Crashlog.CrashlogHelper.WrapWithCrashLog[T](Func`1 method, String logdir, String applicationName)
Unhandled exception. Duplicati.Library.Interface.UserInformationException: Server crashed on startup
---> System.Exception: Ein schwerwiegender Fehler trat in Duplicati auf: code = Error (1), message = System.Data.SQLite.SQLiteException (0x800007BF): SQL logic error
no such column: LogEntryID
at System.Data.SQLite.SQLite3.Prepare(SQLiteConnection cnn, String strSql, SQLiteStatement previous, UInt32 timeoutMS, String& strRemain)
at System.Data.SQLite.SQLiteCommand.BuildNextCommand()
at System.Data.SQLite.SQLiteCommand.GetStatement(Int32 index)
at System.Data.SQLite.SQLiteDataReader.NextResult()
at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteDbDataReader(CommandBehavior behavior)
at Duplicati.Server.Database.Connection.Read[T](IDbCommand cmd, Func`2 f)+MoveNext()
at System.Collections.Generic.LargeArrayBuilder`1.AddRange(IEnumerable`1 items)
at System.Collections.Generic.EnumerableHelpers.ToArray[T](IEnumerable`1 source)
at Duplicati.Server.Database.Connection.ReadFromDb[T](Func`2 f, String sql, Object[] args)
at Duplicati.Server.Database.Connection.ReadFromDb[T](String whereclause, Object[] args)
at Duplicati.Server.Database.Connection.GetNotifications()
at Duplicati.Server.Program.AdjustApplicationSettings(Dictionary`2 commandlineOptions)
at Duplicati.Server.Program.Main(String[] _args)
---> code = Error (1), message = System.Data.SQLite.SQLiteException (0x800007BF): SQL logic error
no such column: LogEntryID
at System.Data.SQLite.SQLite3.Prepare(SQLiteConnection cnn, String strSql, SQLiteStatement previous, UInt32 timeoutMS, String& strRemain)
at System.Data.SQLite.SQLiteCommand.BuildNextCommand()
at System.Data.SQLite.SQLiteCommand.GetStatement(Int32 index)
at System.Data.SQLite.SQLiteDataReader.NextResult()
at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteDbDataReader(CommandBehavior behavior)
at Duplicati.Server.Database.Connection.Read[T](IDbCommand cmd, Func`2 f)+MoveNext()
at System.Collections.Generic.LargeArrayBuilder`1.AddRange(IEnumerable`1 items)
at System.Collections.Generic.EnumerableHelpers.ToArray[T](IEnumerable`1 source)
at Duplicati.Server.Database.Connection.ReadFromDb[T](Func`2 f, String sql, Object[] args)
at Duplicati.Server.Database.Connection.ReadFromDb[T](String whereclause, Object[] args)
at Duplicati.Server.Database.Connection.GetNotifications()
at Duplicati.Server.Program.AdjustApplicationSettings(Dictionary`2 commandlineOptions)
at Duplicati.Server.Program.Main(String[] _args)
--- End of inner exception stack trace ---
at Duplicati.Server.Program.Main(String[] _args)
at Duplicati.GUI.TrayIcon.HostedInstanceKeeper.<>c__DisplayClass5_0.<.ctor>b__0(Object dummy_arg)
--- End of inner exception stack trace ---
at Duplicati.GUI.TrayIcon.HostedInstanceKeeper..ctor(String[] args)
at Duplicati.GUI.TrayIcon.Program.Main(String[] _args)
at Duplicati.GUI.TrayIcon.Net8.Program.<>c__DisplayClass0_0.<Main>b__0()
at Duplicati.Library.Crashlog.CrashlogHelper.WrapWithCrashLog[T](Func`1 method, String logdir, String applicationName)
at Duplicati.GUI.TrayIcon.Net8.Program.Main(String[] args)
Is there any way to repair that installation?
That column was added 7 years ago and the upgrade should automatically add it.
Fixing the column is easy, but I wonder what else is missing?
If only that column is missing, you can use a tool such as SQLiteBrowser and run:
ALTER TABLE "Notification" ADD COLUMN "LogEntryID" TEXT NULL;
You can see the current database schema in the source code, if you need to compare it with yours.
Horst:
I decided just to upgrade to the current stable version 2.1.0.4.
Now I can’t start Duplicati at all anymore. 
The upgrade process will leave a copy of the previous database in the storage folder.
The default storage folder is %LOCALAPPDATA%Duplicati
and in there you should see a file called Duplicati-server.sqlite
.
There should also be a backup file with the same name + a timestamp.
If you are sure the upgrade botched things, you can delete the current file, and rename the backup copy. Running Duplicati will then repeat the upgrade process, hopefully with better results.