我们的软件的新测试版有一些变化,但不是我们的数据库层。
我们刚刚开始在服务器日志中报告错误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次而不是47,000次。无论哪种方式,我都想让它发生“0”次。
答案 0 :(得分:0)
可能的解决方案:Exception Message: Some kind of disk I/O error occurred
摘要:数据库可能没有问题,但在打开数据库后创建(或删除)临时文件时出现问题。 AIR可能拥有数据库的权限,但不能创建或删除目录中的文件。
对我有用的一个答案是使用
PRAGMA
语句将journal_mode
值设置为以外的值DELETE
即可。您可以通过发出PRAGMA
语句来执行此操作,方法与发出查询语句的方式相同。
PRAGMA journal_mode = OFF
不幸的是,如果在设置了OFF日记模式时应用程序在事务中间崩溃,那么数据库文件很可能会损坏。 1 。
答案 1 :(得分:0)
解决方案是通过包装一个小包装来确保数据库删除,更新,插入只发生一次。最重要的是,我们必须注意错误3128并重试。我认为这是因为我们有一个触发器运行,可以在我们插入数据后锁定数据库。