FMDB 更新版本号不起作用



我知道如何使用FMDB进行基本功能,如创建数据库表等。

当我想更新我的表时,例如添加新列,我需要更新用户版本号。

FMDB有一个userVersion属性应该是sqlite的user_version。我使用了以下代码:

if let db = DBManager.shared.database, db.userVersion == 0, db.open() {
     addColumnsToSomeTable()
     db.userVersion = 1
}

但是运行项目,userVersion仍然是0。它应该是 1,这个 if 块不应该输入。

为什么用户版本无法升级?

我也试过:

let string = "PRAGMA user_version = 1"
do {
  try db.executeUpdate(string, values: nil)
} catch {    
}

还是同样的问题。

我搜索了一些教程,其中大多数都有如下fileExists检查:

if !FileManager.default.fileExists(atPath: dbPath) {
        database = FMDatabase(path: dbPath)
    }

这有什么意义?如果文件存在,获取它的正确方法是什么? 与 : database = FMDatabase(path: dbPath) 不同 ?

我同时打开了sqlite软件DB Browser for SQLite。关闭它,然后工作正常。

最新更新