【发布时间】:2012-08-20 21:31:08
【问题描述】:
每当我有一个使用 ActiveRecord 的应用程序时,我都会收到此 ConnectionTimeoutError - 但总是在某个未知时间段之后
ActiveRecord::ConnectionTimeoutError (could not obtain a database connection within 5 seconds. The max pool size is currently 30; consider increasing it.):
之前设置为5,我们已经增加了,不可能同时使用30个连接。我们使用 ActiveRecord 的唯一目的是我们的会话存储。
我们的 database.yml 文件如下所示:
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 30
timeout: 5000
(测试和生产设置相同)
我一直在谷歌上搜索这个事件,刚刚看到这个帖子:
https://groups.google.com/forum/#!msg/copenhagen-ruby-user-group/GEHgi_WudmM/gnCiwWqmVfMJ
其中提到 ActiveRecord 在完成连接后不会将连接检查回池中?真的吗?我需要手动管理连接吗?
感谢任何建议!
edit我应该提到我正在运行 Rails 3.1.3
【问题讨论】:
-
您的 sqlite gem 是否良好且是最新的? sqlite 文件是否具有良好的权限?
-
在您的终端中运行“rake 中间件”并查找 ActiveRecord::ConnectionAdapters::ConnectionManagement
-
@KyleC - 请在下面查看我对您帖子的评论。 @quatermain - 我们的 Gemfile(与 sqlite 和数据库相关)中的 gem 是
activerecord-jdbc-adapter using version 1.2.2、activerecord-jdbcsqlite3-adapter using version 1.2.2和jdbc-sqlite3 using version 3.7.2 -
老实说,我是在使用这些 Gems 创建 Gemfile 之后进入这个项目的 - 我们是否可能不需要所有这 3 个?
标签: ruby-on-rails activerecord ruby-on-rails-3.1 database-connection connection-timeout