ios - FMDB更新版本号不起作用

标签 ios swift database sqlite 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 block 。

为什么userVersion无法升级?

我也尝试过:

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。关闭它,然后就可以正常工作了。

关于ios - FMDB更新版本号不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46642854/

相关文章:

mysql - 如何从mysql表中删除数百万条记录

iphone - 动态设置动态生成的 UITableviews 的高度和位置?

ios - iPhone 11 空白导航菜单

swift 。如何修改导航堆栈以在队列中显示另一个 View Controller

ios - 试图战略性地移动 Swift 中的第一响应者?

amazon-web-services - 数据库中的用户提要(可能是 DynamoDb)

ios - App 进入 App Store 且 Container 处于生产模式后,是否可以在 CloudKit 中更改数据模型?

ios - 标签栏 iPad 应用程序到侧边栏 macOS Catalyst 应用程序

swift - 编译器不喜欢完成处理程序中的保护语句

java - 我怎样才能在 Hibernate 中做乘法关系?