Mysql Can';不要转储远程数据库

Mysql Can';不要转储远程数据库,mysql,ruby-on-rails,database,rake,Mysql,Ruby On Rails,Database,Rake,我在database.yml文件中有此数据库配置 development: adapter: mysql2 encoding: utf8 reconnect: false database: oma_development pool: 5 username: root password: host: localhost test: # same as in development section production: # same as in dev

我在database.yml文件中有此数据库配置

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: oma_development
  pool: 5
  username: root
  password:
  host: localhost

test:
  # same as in development section

production:
  # same as in development section


development_blacklist:
  adapter: mysql2
  encoding: utf8
  database: webstuff
  username: login
  password: password
  host: remote-database.com

test_blacklist:
  adapter: mysql2
  encoding: utf8
  database: webstuff
  username: megas
  password:
  host: /var/run/mysqld/mysqld.sock
我想执行rake任务:

namespace :db do
  namespace :schema do
    desc 'Dump blacklist database schema'
    task :dump => [:environment, :load_config] do
      filename = "#{Rails.root}/db/blacklist_schema.rb"
      File.open(filename, 'w:utf-8') do |file|
        ActiveRecord::Base.establish_connection("development_blacklist")
        ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
      end
    end
  end
end
通过调用此命令:

rake db:schema:dump
我有一个错误:

rake aborted!
Access denied for user 'root'@'localhost' (using password: NO)
所以看起来rake任务正试图从
开发
部分连接到数据库

我不明白为什么rake任务试图连接到
development
数据库,而rake任务应该连接到
development\u blacklist
数据库


如何将rake任务设置为仅连接到
开发\u黑名单
数据库?

您可以显式设置环境,例如:

$ RAILS_ENV=production rake db:schema:dump

您可以显式设置环境,例如:

$ RAILS_ENV=production rake db:schema:dump

或者在您的案例中是
RAILS\u ENV=development\u黑名单rake db:schema:dump
,或者在您的案例中是
RAILS\u ENV=development\u黑名单rake db:schema:dump