正在使用SQLite3运行rails站点.
大约每500个请求我就会收到一次
ActiveRecord::StatementInvalid(SQLite3::BusyException:数据库已锁定:...
有什么方法可以对我的代码进行最小程度的修改?
我现在使用SQLLite是因为你可以将数据库存储在源代码管理中,这样备份就很自然了,你可以很快将更改推出.然而,它显然不是真正为并发访问设置的.明天早上我将迁移到MySQL.
正在使用SQLite3运行rails站点.
大约每500个请求我就会收到一次
ActiveRecord::StatementInvalid(SQLite3::BusyException:数据库已锁定:...
有什么方法可以对我的代码进行最小程度的修改?
我现在使用SQLLite是因为你可以将数据库存储在源代码管理中,这样备份就很自然了,你可以很快将更改推出.然而,它显然不是真正为并发访问设置的.明天早上我将迁移到MySQL.
默认情况下,如果数据库忙且已锁定,sqlite会立即返回一个阻塞的忙错误.你可以要求它等待,并在放弃之前继续try 一段时间.这通常可以解决问题,除非有1000个线程访问数据库,我同意sqlite不合适.
// set SQLite to wait and retry for up to 100ms if database locked sqlite3_busy_timeout( db, 100 );