2010-02-09 6 views
1

J'espérais faire des tests unitaires mais c'est ce que je suis en train de faire. Les internets sont silencieux sur la question. Rails 2.1 Faites-moi savoir s'il y a d'autres informations qui pourraient aider.Râteau abandonné! Nom de base de données incorrect?

[email protected]:~/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' 

Mon 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 

Répondre

2

Il semble que vous n'avez pas spécifié un nom de base de données pour l'environnement test dans votre fichier config/database.yml.

+0

juste un suivi, @sleepycat Si c'est la première fois que vous le faites, vous pourriez être tenté de le pointer vers votre base de données de développement. Ne faites pas cela ou sinon vous perdrez tout ce que vous avez dans votre base de données dev. créer un test db puis laisser le test créer les tables et les colonnes pour vous à partir du schéma – keikun17

+0

@Alex: Je suis assez sûr que j'ai un nom de base de données dans la section de test de mon database.yml. Je ne l'ai pas en face de moi mais je suis sûr qu'il est déjà là. Je vous le dirai demain à coup sûr ... @keikun: :) En fait, la raison pour laquelle il est dit pour la première fois est parce que je commence tout juste à lancer des tests sur l'application. Merci quand même. – mikewilliamson

+0

@Alex: J'ai vérifié et j'ai définitivement le nom de la base de données de test dans ma base de données.yml. Si vous avez une autre idée, j'aimerais l'entendre. C'est un vrai scratcheur de tête. – mikewilliamson

0

lignes de fin cative dans les commentaires, donc je vais juste mettre ici


peut vous exécuter alors script/console ne:

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

@a

puis coller le contenu de @a

Questions connexes