由于this question似乎已被放弃,我将在此处制作扩展版本。
与其他问题类似,只要应用程序执行SQLite3::IOException: disk I/O error
,我就会通过错误乘客运行基于机架的应用程序时获得select
。
我有一个使用Sequel gem对抗sqlite3数据库的Padrino应用程序。我一直在使用运行Mavericks的MacBook Pro上进行开发。我一直在使用独角兽宝石在本地运行应用程序,一切都运行得很好。最近我决定使用Passenger和Apache(2.4)运行应用程序。当我在passenger / apache下运行应用程序时,应用程序错误输出以下内容打印到页面:
Sequel::DatabaseError at /
SQLite3::IOException: disk I/O error
然后是通常的回溯/环境,它没有任何明显的错误。
该日志包含以下其他详细信息:
SQLite3::IOException: disk I/O error: SELECT * FROM `records` ORDER BY `day`
数据库的权限设置正确,因为我可以在unicorn下运行应用程序。我可以手动访问和查询数据库(即使是那个确切的查询),它也会通过pragma integrity_check;
。
Phusion Passenger服务于另一个应用程序(Rails,pg),但可能没有正确配置。
您可以看到整个代码库on my GitHub。
由于我使用的是不同的本地服务器(unicorn v shotgun),web服务器(apache v nginx)和应用程序,我认为我们可以将其缩小到仅与其他问题相同的事情:< / p>
此外,如果我启动独角兽,并以这种方式访问应用程序,然后快速访问apache / passenger然后页面加载正常并保持良好一段时间但最终在一段时间不活动后再次出现错误。< / strike>原来这是因为由于某些原因启用了开发模式的缓存,这已经得到纠正,现在行为是一致的(乘客没有工作,独角兽会这样做。)
我编辑了生产设置以使用开发数据库,没有变化。
如果我切换到pg,一切正常。我只是感到困惑,为什么sqlite gem不会起作用。
有人有什么想法吗?