views:

291

answers:

2

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
+1  A: 

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

Alex Reisner
just a follow up,@sleepycat if this is your first time to do this, you might get tempted to just point it to your development database. DONT DO THIS or else you'll lose everything that you have in your dev database. create a test db then let the test create the tables and columns for you from the schema
keikun17
@Alex: I'm pretty sure I have a database name in the test section of my database.yml. I don't have it in front of me but I am pretty sure its already there. I'll tell you tomorrow for sure...@keikun: :) Actually the reason it says first time is because I am just starting to run tests on the app. Thanks though.
Mike Williamson
@Alex: I checked and I definitely have the test database name in my database.yml. If you have another idea I would love to hear it. This is a real head scratcher.
Mike Williamson
Hmm...can you post your `config/database.yml` file? There may be a different problem with it...
Alex Reisner
@Alex: Ok there it is. I edited my question because there is no code formatting in the comments. Thanks for looking at this.
Mike Williamson
edit : ah dangit, cant do formatting here in the comments, just check my answer below
keikun17
A: 

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

keikun17