sqlite.swift数据库表被锁定(代码:6)

时间:2017-12-19 02:14:31

标签: swift sqlite sqlite.swift

我正在尝试创建一个将同步在线数据库中的数据的项目。

我有4个文件来处理整个过程:

  1. dbConnection.swift
  2. createTables.swift
  3. dropAllTables.swift
  4. updateDatabase.swift
  5. 尝试删除表时遇到问题。

    例如,我在FLEET_GROUPINGS_FOR_IPAD_SYSTEM的函数中有一个名为createTables.swift的表。

    以下代码(在dropAllTables.swift中的单独函数中):

    let table = Table("FLEET_GROUPINGS_FOR_IPAD_SYSTEM")
    try db.run(table.drop())
    

    抛出此错误:

    database table is locked (code: 6)
    

2 个答案:

答案 0 :(得分:0)

尝试使用同步

在单个线程中运行所有表相关数据
DispatchQueue.global(qos: .background).sync 
           {
             try db.run(table.drop())
           }

答案 1 :(得分:0)

这最终对我有用,在每次读/写操作后手动关闭连接:db = Connection()。这是一个混乱的解决方案,因为sqlite.swift意味着自动关闭其连接,但我遇到了这个问题,因为我将我的连接定义为一个单独的函数。我不建议这样做,最好在每个文件开头时定义连接。