我正在尝试创建一个将同步在线数据库中的数据的项目。
我有4个文件来处理整个过程:
尝试删除表时遇到问题。
例如,我在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)
答案 0 :(得分:0)
尝试使用同步
在单个线程中运行所有表相关数据DispatchQueue.global(qos: .background).sync
{
try db.run(table.drop())
}
答案 1 :(得分:0)
这最终对我有用,在每次读/写操作后手动关闭连接:db = Connection()。这是一个混乱的解决方案,因为sqlite.swift意味着自动关闭其连接,但我遇到了这个问题,因为我将我的连接定义为一个单独的函数。我不建议这样做,最好在每个文件开头时定义连接。