![](/img/trans.png)
[英]ActiveRecord::ConnectionNotEstablished - No connection pool for X
[英]`retrieve_connection': No connection pool for Model (ActiveRecord::ConnectionNotEstablished)
我有一个简单的Ruby脚本,我在本地成功使用该脚本将CSV文件导入到我的模型中。 这在开发中有效,但在生产中失败(Heroku)
我似乎无法摆脱以下错误:
`retrieve_connection':公司没有连接池(ActiveRecord :: ConnectionNotEstablished)
open_csv_prod.rb
require 'csv'
require_relative 'helpers'
require 'active_record'
require 'rails'
# Connect to database
ActiveRecord::Base.configurations[Rails.env] || Rails.application.config.database_configuration[Rails.env]
class Company < ActiveRecord::Base
print_memory_usage do
print_time_spent do
#open the file
filename = 'lib/assets/1/BasicCompanyData-2016-09-01-part1_5.csv'
# count how many rows?
line_count = `wc -l "#{filename}"`.strip.split(' ')[0].to_i
# Print that result
puts "#{line_count}"
count = 0
CSV.foreach(filename, headers: true) do |row|
Company.create! row.to_hash
count += 1
p "#{count}"
end
end
end
end
heroku运行ruby open_csv_prod.rb
这导致上面报告的错误。 我不知道为什么Heroku会抱怨一个池,因为当我在Heroku Rails控制台中检查ActiveRecord :: Base.configurations [Rails.env]时,列出了该池。
我应该说我已经尝试了以下数据库配置,但是由于heroku在[DATABASE_URL]中存储了数据库信息,所以它也失败了。
ActiveRecord::Base.establish_connection(
adapter: 'postgresql',
host: ENV['IP'],
username: ENV['USERNAME'],
password: ENV['PASSWORD'],
database: 'dbb_development'
)
有可能我试图连接所有错误的设备,如果是这样,我只需要在终端中执行的ruby脚本中写入我的Company模型即可。
这是一个远景,但是,您说过heroku将数据库配置信息存储在URL中。 以下代码摘自Rails文档
http://api.rubyonrails.org/classes/ActiveRecord/ConnectionHandling.html
ActiveRecord::Base.establish_connection(
"postgres://myuser:mypass@localhost/somedatabase"
)
也许您可以像这样连接:
ActiveRecord::Base.establish_connection(
ENV['DATABASE_URL']
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.