0

このデータベース構成は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

そして、私はレーキタスクを実行したい:

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)

developmentしたがって、rakeタスクはセクションからデータベースに接続しようとしているようです。

developmentrakeタスクがデータベースに接続しようとしているのにrakeタスクがデータベースに接続しようとしている理由がわかりませんdevelopment_blacklist

development_blacklistデータベースにのみ接続するようにrakeタスクを設定するにはどうすればよいですか?

4

1 に答える 1

3

たとえば、次のように環境を明示的に設定できます。

$ RAILS_ENV=production rake db:schema:dump
于 2013-03-15T11:33:02.677 に答える