mikewilliamson
mikewilliamson

Reputation: 24783

Rake aborted! Incorrect database name?

I was hoping to run some unit tests but this is what I am getting. The internets are silent on the issue. Rails 2.1 Let me know if there is any other info that would help.

    mike@sleepycat:~/projects/myapp$ rake test:units --trace
    (in /home/mike/projects/myapp)
    ** Invoke test:units (first_time)
    ** Invoke db:test:prepare (first_time)
    ** Invoke environment (first_time)
    ** Execute environment
    ** Invoke db:abort_if_pending_migrations (first_time)
    ** Invoke environment 
    ** Execute db:abort_if_pending_migrations
    ** Execute db:test:prepare
    ** Invoke db:test:clone (first_time)
    ** Invoke db:schema:dump (first_time)
    ** Invoke environment 
    ** Execute db:schema:dump
    ** Invoke db:test:purge (first_time)
    ** Invoke environment 
    ** Execute db:test:purge
    rake aborted!
    Mysql::Error: Incorrect database name '': DROP DATABASE IF EXISTS ``
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/abstract_adapter.rb:147:in `log'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/mysql_adapter.rb:299:in `execute'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/mysql_adapter.rb:384:in `drop_database'
    /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/connection_adapters/mysql_adapter.rb:364:in `recreate_database'
    /usr/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/tasks/databases.rake:315
    /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call'
    /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `execute'
    /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `each'
    /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `execute'
    /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in `invoke_with_call_chain'

My database.yml:

    # MySQL (default setup).  Versions 4.1 and 5.0 are recommended.
    #
    # Install the MySQL driver:
    #   gem install mysql
    # On MacOS X:
    #   gem install mysql -- --include=/usr/local/lib
    # On Windows:
    #   gem install mysql
    #       Choose the win32 build.
    #       Install MySQL and put its /bin directory on your path.
    #
    # And be sure to use new-style password hashing:
    #   http://dev.mysql.com/doc/refman/5.0/en/old-client.html
    development:
      adapter: mysql
      database: myapp_development
      username: root
      password: mikespass
      host: 127.0.0.1
      #socket: /tmp/mysql.sock

    # Warning: The database defined as 'test' will be erased and
    # re-generated from your development database when you run 'rake'.
    # Do not set this db to the same as development or production.
    test:
      adapter: mysql
      database: myapp_test
      username: root
      password: mikespass
      host: 127.0.0.1

    production:
      adapter: mysql
      database: myapp_production
      username: root
      password: 

    mikes:
      adapter: mysql
      database: myapp_development
      username: root
      password: mikespass
      host: 127.0.0.1

    staging:
      adapter: mysql
      database: myapp_development
      username: root
      password: mikespass
      host: 127.0.0.1

Upvotes: 1

Views: 2356

Answers (2)

keikun17
keikun17

Reputation: 121

cant end lines in comments so i'll just put it here


can you run script/console then do :

@a = YAML::load(File.open("#{RAILS_ROOT}/config/database.yml"))

@a

then paste the contents of @a

Upvotes: 0

Alex Reisner
Alex Reisner

Reputation: 29427

It looks like you haven't specified a database name for the test environment in your config/database.yml file.

Upvotes: 2

Related Questions