я использую Sqlite.swift
когда я перезапускаю приложение в симуляторе, я хочу удалить существующую базу данных и создать новую базу данных. (из-за инициализации базы данных... я часто меняю столбец базы данных.)
но есть предупреждающее сообщение.
[logging] BUG IN CLIENT OF libsqlite3.dylib: database integrity compromised by API violation: vnode unlinked while in use:
я знаю, что речь идет о целостности ... но я не знаю, как я могу решить эту проблему.
вот мой код. когда вы нажимаете кнопку «Создать», функция 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
Я узнал, что это не ошибка, а предупреждение. и когда я перезапускаю приложение, операция удаления работает очень хорошо без предупреждающего сообщения. но когда я второй раз нажимаю кнопку «Создать», появляется предупреждающее сообщение.
Я не удалял базу данных, когда выключал приложение. поэтому, я думаю, ясно, что база данных будет удалена при повторном включении приложения. поэтому я не знаю, в чем проблема с созданием БД дважды. Я был бы очень признателен, если бы вы могли сказать мне! Пожалуйста, дай мне знать.