Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何解析警告消息';libsqlite3.dylib客户端中的错误:API冲突损害了数据库完整性';在Sqlite.swift中?_Ios_Swift_Integrity_Sqlite.swift - Fatal编程技术网

Ios 如何解析警告消息';libsqlite3.dylib客户端中的错误:API冲突损害了数据库完整性';在Sqlite.swift中?

Ios 如何解析警告消息';libsqlite3.dylib客户端中的错误:API冲突损害了数据库完整性';在Sqlite.swift中?,ios,swift,integrity,sqlite.swift,Ios,Swift,Integrity,Sqlite.swift,我正在使用Sqlite.swift 当我在模拟器中重新启动应用程序时,我想删除现有数据库并创建新数据库。(由于初始化数据库…我经常更改数据库列。) 但有一个警告信息 [logging] BUG IN CLIENT OF libsqlite3.dylib: database integrity compromised by API violation: vnode unlinked while in use: 我知道这是关于正直的。。。但我不知道如何解决这个问题 这是我的密码。单击“创建”按钮时

我正在使用Sqlite.swift

当我在模拟器中重新启动应用程序时,我想删除现有数据库并创建新数据库。(由于初始化数据库…我经常更改数据库列。)

但有一个警告信息

[logging] BUG IN CLIENT OF libsqlite3.dylib: database integrity compromised by API violation: vnode unlinked while in use:
我知道这是关于正直的。。。但我不知道如何解决这个问题

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

func createDB(){
打印(“创建数据库”)
做{
让documentDirectory=try FileManager.default.url(对于:.documentDirectory,在:.userDomainMask中,适用于:nil,创建:true)
让fileUrl=documentDirectory.appendingPathExtension(“测试”).appendingPathExtension(“sqlite3”)
//如果存在现有数据库,则将其删除
让fileMng=FileManager.default
如果fileMng.fileExists(atPath:fileUrl.path){
做{
请尝试fileMng.removietem(位于:fileUrl)
打印(“删除数据库文件,因为您已经有了数据库”)
}
抓住{
打印(“删除数据库错误”,错误)
}
}
let database=尝试连接(fileUrl.path)
self.database=数据库
打印(“成功创建数据库”)
}
抓住{
打印(“创建数据库错误:”,错误)
}
}
这是日志

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
我发现这不是错误,而是警告。当我重新启动应用程序时,删除操作在没有警告消息的情况下运行良好。但是,当我再次单击“创建”按钮时,警告消息会发出警报


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

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

self.database = nil
self.createDB()

(或者,你也可以在
createDB()
中找到它)

omg多亏了你快速而友好的解释,我节省了时间。再次感谢您,非常感谢您快速清晰的回答:)