2011-02-06 20 views
8

Lavorare con un'app rails, con qualche sorta di problemi di database/rake.Database non selezionato nel progetto rails durante il tentativo di rake db: migrate

Quando eseguo:

rake db:migrate 

Sto ottenendo il seguente errore:

Mysql2::Error: No database selected: SHOW TABLES 

(See full trace by running task with --trace) 

La traccia non sta rivelando molte informazioni utili. Può essere visto qui: http://pastebin.com/WdsguudC

Il file di configurazione sembra corretto e l'utente si sta collegando, altrimenti avrei avuto qualche tipo di errore di accesso. Il database esiste, l'utente ha il permesso corretto e posso accedere e manipolarlo manualmente. Ho fatto un sacco di googling e non ho trovato nulla di utile. Non sono sicuro se c'è qualche altro codice che è necessario fornire, perché questo sembra un problema di livello abbastanza basso.

risposta

12

dopo tutto quello che era un problema di spaziatura nel yaml.

+0

+1 per documentare – Zinc

+0

Stesso problema qui. Noioso. –

+1

re5et, sto avendo lo stesso problema Ti ricordi quale era il problema di spaziatura e in quale file yml? –

9

Si noti che Ruby ha scambiato il parser YAML in una versione 1.9.2 recente.

Ciò potrebbe causare questo problema.

Per tornare alla vecchia YAML parser syck, utilizzare questo in boot.rb:

require 'yaml' 
YAML::ENGINE.yamler= 'syck' 
2

ho avuto lo stesso problema con rubino 1.9.2-P180, aggiornato a P290 e funziona

0

Ho avuto un errore simile quando ho digitato rake db:schema:dump e si scopre che devo solo commentare tutti i database sul mio file yaml tranne il mio development uno.

1

Basta riavviare il server; nella riga di comando:

  1. Press Ctrl +C

  2. eseguire:

    rails s 
    
+0

mi ha aiutato grazie – fruitcup

0

dare una prova di questo.

rake db:test:prepare 

Installare questo per vedere se si è effettivamente creato un tavolo o meno. Aprire il "development.sqlite3" nella cartella db

http://sqlitebrowser.org/

0

suo un semplice errore di checkout l'intero database.yml file e vedi che dove è data la decription viene dato il nome del database oppure no se non guarda sotto ci sarà anche un altro nome di sviluppo dove viene usata la configurazione del database check che ti dà il nome del tuo database

default: &default 
    adapter: mysql2 
    encoding: utf8 
    pool: 5 
    username: root 
    password: 12345 
    host: localhost 

development: 
     <<: *default 
     database: db_name 
1

Beh, è ​​un problema comune per noi principianti. Questo problema deriva dal momento in cui crei il tuo nuovo progetto in rotaie. Diciamo che per avere un esempio

$ rails new toy –d mysql
  • Dopo aver fatto il bundle e avviare il server, molto probabilmente si avrà un errore. Per correggerlo devi andare al tuo database.yml e modificare la seguente:

Aggiungi una password nel campo password come illustrato di seguito, questa è la password utilizzata per proteggere mysql.

 
default: &default 
    adapter: mysql2 
    encoding: utf8 
    pool: 5 
    username: root 
    password: mypassword 
    socket: /tmp/mysql.sock

Inoltre, come commento al database aggiungendo un tag cancelletto (#) prima del nome come illustrato di seguito

 
development: 
: *default 
    database: #toy_development 
  • Quindi riavviare la riga di comando e andare alla radice della vostra applicazione e tipo :
$ rails s

bisogna vedere il Ruby on Rails pagina di benvenuto ..

  • Dopo, è necessario creare un database.

Creare un DATABASE.

Il messaggio di errore sta dicendo che non è selezionato DATABASE. È perché non l'ho creato. Quando si lavora con MySQL è necessario creare uno, in modo da:

  • andare alla radice della mia applicazione e tipo:
$ mysql –u root –p 
$ Passwor: mypassword (Enter your password, this is the one you entered to secure MySQL) 

Nota: Questo esempio funziona ingegno un progetto chiamato toy e l'utente che volevo concedere i privilegi è mark e la password che darò è 45mark. Sotto vedrai dove applico questi elementi. Ricorda di applicare i tuoi elementi su ciascuna parte della dichiarazione.

Creare e utente per questo progetto

  • Una volta che siete in, vedrete il puntatore (mysql>), quindi digitare dopo:
mysql> GRANT ALL PRIVILEGES ON toy_development.* TO 'mark'@'localhost' IDENTIFIED BY '45mark';
  • Quindi digitare:
mysql> exit;
  • Verificare che si sta lavorando digitando:
$ mysql –u mark –p toy_development 
Enter password: 45mark (You enter the one you gave)
  • Aprire database.yml di file e configurare ciò che è necessario e fissare come richiesto. Nel mio caso mi occasione il nome utente per segnare e la password per 45mark
 
default: &default 
    adapter: mysql2 
    encoding: utf8 
    pool: 5 
    username: mark 
    password: 45mark 
    socket: /tmp/mysql.sock 


- Inoltre, RIMUOVERE il tag cancelletto (#), ha aggiunto prima di

development: 
    : *default 
    database: toy_development

salvarlo.

  • andare alla radice della richiesta e del tipo
$ rake db:schema:dump

Fatto !!

Spero che questo aiuti. Codifica felice !!

Grazie

Problemi correlati