用命名空间更新数据库做迁移

时间:2013-03-17 08:01:02

标签: ruby-on-rails ruby-on-rails-3

我正在尝试对我的数据库进行更改,并首先在我的locahost中测试它。谁能看出我的错误是什么?

在lib / tasks / update.rake中:

namespace :update do

  desc "Update country"
  task :country_fix => :environment do
    Guideline.where(:hospital => 'Maine Medical Center, Maine').each do |t|
      t.update_attributes(hospital: 'Maine Medical Center')

    end

  end
end

当我跑步时

rake update:country_fix

它会显示一条错误消息(使用--trace)...

** Invoke update:country_fix (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute update:country_fix
rake aborted!
Connection refused - connect(2)

2 个答案:

答案 0 :(得分:2)

Connection refused - connect(2)

你检查过你的database.yml文件了吗?也许您的数据库服务器或用户配置错误。

修改

检查您的环境。例如,如果在生产服务器中运行rake任务,则应在rake命令前加上这样的前缀:

RAILS_ENV=production rake update:country_fix

答案 1 :(得分:1)

Rake任务本身看起来很好。

Connection refused让我相信使用config/database.yml中的设置连接到数据库时出现问题。检查您的RAILS_ENV对应的数据库是否正在运行。测试的一种快速方法是:

rails db

...将根据您当前的数据库配置和当前的mysql打开数据库控制台(psqlRAILS_ENV等)。

检查RAILS_ENV

echo $RAILS_ENV

...并确保您真正尝试连接到预期的数据库。

如果rails db不起作用,则修复程序将取决于您的数据库。如果它是PostgreSQL或MySQL或Mongo或大多数数据库,则必须使用适合您系统的任何内容启动服务器。如果是SQLite3,则没有服务器;可能存在文件权限问题,但似乎这是一个不同的错误。