gpt4 book ai didi

ios - 如何解决 Sqlite.swift 中的警告消息 'BUG IN CLIENT OF libsqlite3.dylib: database integrity compromised by API violation'?

转载 作者:行者123 更新时间:2023-12-03 19:14:40 31 4
gpt4 key购买 nike

我正在使用 Sqlite.swift

当我在模拟器中重新启动应用程序时,我想删除现有数据库并创建新数据库。 (因为初始化数据库......我改变了数据库列很多。)

但有警告信息。

[logging] BUG IN CLIENT OF libsqlite3.dylib: database integrity compromised by API violation: vnode unlinked while in use:

我知道这是关于诚信...但我不知道我该如何解决这个问题。

这是我的代码。当您单击“创建”按钮时,func createDB() 将起作用。

    func createDB() {
print("CREATE DB")
do {

let documentDirectory = try FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)

let fileUrl = documentDirectory.appendingPathExtension("test").appendingPathExtension("sqlite3")

// if there is existing db, then remove it
let fileMng = FileManager.default
if fileMng.fileExists(atPath: fileUrl.path) {
do {
try fileMng.removeItem(at: fileUrl)
print("remove db file because you already have db")
}
catch {
print("Remove DB Error", error)
}
}

let database = try Connection(fileUrl.path)
self.database = database
print("Successfully create database")
}
catch {
print("Create DB Error : ", error)
}
}

这是日志。
CREATE DB
remove db file because you already have db
Successfully create database
CREATE DB
remove db file because you already have db
2020-04-13 23:01:36.866156+0900 RealmTest[40604:6719249] [logging] BUG IN CLIENT OF libsqlite3.dylib: database integrity compromised by API violation: vnode unlinked while in use: {directory-address-in-my-local-computer}
2020-04-13 23:01:36.866272+0900 RealmTest[40604:6719249] [logging] invalidated open fd: 5 (0x11)
Successfully create database

我发现这不是错误,而是警告。当我重新启动应用程序时,删除操作工作得很好,没有警告消息。但是当我第二次单击“创建”按钮时,警告消息会发出警报。

当我关闭应用程序时,我没有删除数据库。因此,我认为很明显,当再次打开应用程序时,数据库将被删除。所以我不知道两次创建数据库有什么问题。如果您能告诉我,我将不胜感激!请告诉我。

最佳答案

在您调用 createDB() 之前,您需要确保方法,任何与您的数据库的挂起连接都将关闭。您的代码中至少有一个这样的连接,在 self.database 中。所以你需要将它设置为nil。

self.database = nil
self.createDB()

(或者,您可以到 createDB() 里面的那个)

关于ios - 如何解决 Sqlite.swift 中的警告消息 'BUG IN CLIENT OF libsqlite3.dylib: database integrity compromised by API violation'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61189751/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com