FMDB更新或插入查询问题“调用sqlite3_step的未知错误(5:数据库已锁定)eu”]]

问题描述 投票:2回答:3
let dBName = FMDatabase(path: databasePath as String) 
var isUpdated = Bool() 
            if dBName.open()
            {
                isUpdated = dBName.executeUpdate("UPDATE TableName SET \(Column1)=?, \(Column2)=?, \(status)=? WHERE \(ID)=?", withArgumentsInArray: [Column1, Column2, strStatus, strID])
                if isUpdated == true{

                 print("sucess")

                }
                else{

                    print("Error: isUpdated\(dBName.lastErrorMessage())")
                    print("Error: lasterrorcode \(dBName.lastErrorCode())")
                }

                dBName.close()
            }
            else
            {
                print("Error: \(dBName.lastErrorMessage())")
            }

总是显示错误调用sqlite3_step的未知错误(5:数据库已锁定)eu。数据库名称是DatabaseName.sqlite,数据库在DocumentDirectory中可用数据库路径是:

let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
    let url = NSURL(fileURLWithPath: path)
    let filePath = url.URLByAppendingPathComponent(dbName).path!

如果文件名是DatabaseName.db正常工作,则没有任何数据库锁定问题,但如果文件名是DatabaseName.sqlite,则发现相同问题

让dBName = FMDatabase(路径:databasePath作为字符串)var isUpdated = Bool()如果dBName.open(){isUpdated = dBName.executeUpdate(“ UPDATE TableName SET \(...

ios xcode sqlite ios10 fmdb
3个回答
2
投票
还要检查您是否正在通过其他任何应用程序(例如,通过SQLite Manager之类的东西)访问同一数据库文件。同样,如果您在多线程环境中,请切换到FMDatabaseQueue检查一下fmdatabasequeue and thread safety

1
投票
5的值是

SQLITE_BUSY


0
投票
签名很多,请检查是否使用了适当的签名:
© www.soinside.com 2019 - 2024. All rights reserved.