我有以下初始化程序。
/config/initializers/database_connection.rb:
Rails.application.config.after_initialize do
ActiveRecord::Base.connection_pool.disconnect!
ActiveSupport.on_load(:active_record) do
config = Rails.application.config.database_configuration[Rails.env]
config['reaping_frequency'] = (ENV['DB_REAP_FREQ'] || 5).to_i # seconds
config['pool'] = (ENV['DB_POOL'] || 15).to_i
config['checkout_timeout'] = (ENV['DB_CHECKOUT_TIMEOUT'] || 25).to_i # seconds
ActiveRecord::Base.establish_connection(config)
end
end
我仍然收到以下错误:
ActiveRecord::ConnectionTimeoutError - could not obtain a database connection within 5.000 seconds (waited 6.940 seconds)
忽略增加的超时(25秒),并且在5秒后仍然发生超时。
我该如何设置checkout_timeout?
答案 0 :(得分:0)
idk,如何通过配置对象设置config.checkout_timeout
,如果在database.yaml中它应该是可能的,并且该文件也应该被erb解析,允许你在其中使用ENV变量,如下所示:
production:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
checkout_timeout: <%= ENV['TIMEOUT'] %>
我也不知道通过哈希访问设置配置属性。只能通过属性
config.checkout_timeout = 5
然而,我不会感到惊讶,两者都是可能的。
并且不要忘记重启rails服务器并在(spring stop
)之前杀死spring
答案 1 :(得分:0)
checkout_timeout用于PostgreSQL数据库; checkout用于SQLite数据库;
这可能是问题,错误的变量名称?