刚开始收到发生AIR SQLite的错误3182磁盘I / O错误(Just started get

2019-07-03 11:23发布

我们有我们的软件与一些变化的新的beta版,但不是在我们的数据库层。

我们刚刚开始越来越在我们的服务器日志报告的错误3128。 看来,一旦发生,它发生了,只要应用程序是开放的。 它是最明显的代码的一部分是我们日志数据每秒经由SQLite的。 我们已经产生47K的错误在我们的服务器上仅这个月。

3128     Disk I/O error occurred.   Indicates that an operation could not be completed because of a disk I/O error. This can happen if the runtime is attempting to delete a temporary file and another program (such as a virus protection application) is holding a lock on the file. This can also happen if the runtime is attempting to write data to a file and the data can't be written.  

我不知道什么可能会造成这个错误。 也许防病毒程序? 也许我们的应用程序越来越困惑和对彼此的顶部写入数据? 我们使用异步连接。

这是造成很多的问题,我们是处于亏损状态。 它发生在我们的旧版本,但在一个月内可能有100倍,而47000多名倍。 无论哪种方式,我想做到这一点“0”时代。

Answer 1:

可能的解决方法: 异常消息:某些类型的磁盘发生I / O错误

摘要:有可能是不与数据库,但问题一旦打开数据库创建(或删除)临时文件的问题。 AIR可能有权限的数据库,而不是在目录中创建或删除文件。

已经为我工作的一个答案是使用PRAGMA语句设置journal_mode值比其他的东西DELETE 。 您可以通过发出这样做PRAGMA声明以同样的方式,你会发出一个查询语句。

PRAGMA journal_mode = OFF

不幸的是,如果当关闭日志模式设置一个事务中的应用程序崩溃,则数据库文件将很可能去腐败。 1。

1 http://www.sqlite.org/pragma.html#pragma_journal_mode



Answer 2:

解决的办法是,以确保数据库中删除,更新,通过包装一个小包装只插入一个发生在时刻。 最重要的是,我们只好眼睁睁地看着错误3128和重试。 我想这是因为我们有一个触发运行,我们插入的数据后,可以锁定数据库。



文章来源: Just started getting AIR SQLite Error 3182 Disk I/O error occurred
标签: sqlite air