0

我正在尝试对我的数据库进行更改,并首先在我的 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)
4

2 回答 2

2
Connection refused - connect(2)

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

编辑:

还要检查您的环境。例如,如果您在生产服务器中运行您的 rake 任务,您应该像这样为您的 rake 命令添加前缀:

RAILS_ENV=production rake update:country_fix
于 2013-03-17T08:05:12.477 回答
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,则没有服务器;可能存在文件权限问题,但似乎这是一个不同的错误。

于 2013-03-17T08:08:50.893 回答