我目前正在开发信号消息应用程序的一个分支,这里我的应用程序来自原始的 5.22 版本。请看一下回购协议。我不是这个分支的原始开发者,也没有数据库经验。
更多信息:
我想执行本地加密和压缩备份,以便用户将其存储在电脑、磁盘或其他地方。我通过复制数据库、WAL、附件等,将所有内容都包含在一个文件中来完成此操作。此时用户已经安装了应用程序并启动了“恢复备份”路径,备份的所有文件都存储在一个新文件夹中。
应用程序正在使用
GRDB.swift/SQLCipher
pod 来管理数据库。
旧数据库和新数据库以相同的方式创建,我想它们使用相同的密码,在
Configuration()
init 中设置
目标:我应该读取旧数据库并将数据写入刚刚安装的数据库,选择要覆盖的内容(聊天)并保留(设置、密钥等)。
因为我想我应该首先在“导入的”数据库上打开数据库会话,所以我尝试这样做:
do {
var configuration = Configuration()
let dbQueueImported = try DatabaseQueue(path: importedSqlite.path) //here is crashing
//then I don't know what to do, some copy action maybe.
} catch {
print("error \(error)")
}
但是 dbQueueImported 触发了这个断言
extension Database {
//MARK: - database closing
///this method must be called before database deallocation
func close() {
SchedulingWatchdog.precodnitionValidQueue(self)
assert(!isClosed)
//rest of the code....
最后一件事,如果我评论断言,我会收到错误:
SQLite error 1 with statement 'SELECT * FROM sqlite_master LIMIT 1': unsupported file format.
我想我应该做一些事情来打开/关闭连接
即使你可以告诉我是否有人在信号处,我可以寻求帮助也会很有用