我们有一个使用SQLite 3数据库的小型内部Ruby on Rails服务。在完美运行几天后,它在尝试保存模型时开始抛出以下异常:
ActiveRecord::StatementInvalid (SQLite3::SQLException: cannot start a transaction within a transaction: begin transaction)
抛出此错误的Ruby代码很简单:
@rule.save
其中规则是我们要保存到数据库的模型。
一旦发生此错误,我们将无法再通过Rails应用程序写入sqlite数据库。重新启动应用程序后,它会再次运行几天。
由于重新启动Rails应用程序似乎解决了这个问题,我只能猜测它是以某种方式保持数据库事务处于打开状态。我没有写这个应用程序,并且是Ruby的新手。什么可能导致这种情况以及诊断问题的最佳方法是什么?