Моя проблема заключалась в том, что у меня при закрытии коннекшена в Lua исчезал WAL файл базы данных SQLite. Как выяснилось, проблема была вызвана тем, что с++ использовал один инстанс sqlite3 библиотеки (версия 3.27.2, статическая), а LUA использовал другой инстанс sqlite3 библиотеки (версия 3.24.0 - из lsqlite3 версии 0.9.5, а именно lsqlite3complete, то есть статическая lsqlite3).
Решение проблемы оказалось в том, чтобы использовать динамическую версию lsqlite3, которая линкуется динамически с
libsqlite3.so, а также в с++ использовать динамическую версию sqlite3. Тем самым и LUA и с++ будут использовать один и тот же инстанс sqlite3.