2012-03-25 9 views
6

Sto imparando a usare mysql per le app per rails e finalmente sono riuscito a far funzionare la mia app (una specie, per ora). Sono riuscito a installare mysql con homebrew, quindi ho popolato il mio file database.yml e ho eseguito rake db: create. Ora sono in grado di eseguire il mio server di rotaie e navigare nella mia homepage della mia app (in precedenza non ho riscontrato errori nel database).dove si trova il mio database quando si utilizza mysql in rails?

Quindi, ora che sembra che il database (s) è stato creato, dove si trova? Mi stavo chiedendo, perché in precedenza ho usato sqlite3 e ho potuto vedere il mio file di sviluppo in app/db/development.db

Voglio solo capire in modo più dettagliato come mysql funzioni in un contesto di rotaie.

risposta

5

Quando si utilizza MySQL o altri sistemi RDBMS basati su server al posto di SQLite, non si avrà un file di database creato con l'applicazione. Invece, il database è memorizzato all'interno dell'istanza MySQL in esecuzione sul server.

Tecnicamente, ci sono file associati alle tabelle memorizzate nella directory dei dati MySQL, ma la loro posizione non è rilevante per la vostra applicazione, e infatti potrebbe non essere nemmeno leggibile dal vostro normale account utente di shell. Utilizzando un RDBMS client/server invece di uno basato su file come SQLite, si delegano efficacemente a tutte le responsabilità (*) relative all'archiviazione del database su RDBMS, disaccoppiando l'archiviazione dei dati dall'applicazione.

Se ci si connette al server MySQL del vostro ospite con un cliente, vedrete i database dell'applicazione rotaie elencati con

# Connect from the command line 
$ mysql -usomeusername -p 

# Execute MySQL commands 
mysql> SHOW DATABASES; 

output sarà qualcosa di simile a:

+--------------------+ 
| Database   | 
+--------------------+ 
| information_schema | 
| demo    | 
| demo_development | 
| demo_test   | 
| mysql    | 
| test    | 
+--------------------+ 
7 rows in set (0.13 sec) 

(*) Nota - Mi riferisco all'archiviazione del modello di dati, non ad alcuna ulteriore archiviazione basata su file che l'applicazione potrebbe utilizzare, gestita da Rails e dal codice dell'applicazione.

+0

una volta che ottengo alla seconda linea (show databases) ottengo "Ignorando query per altri database" come risultato, non l'output .. tutte le idee sul perché? – jay

+1

Vedi [questo post] (http://forums.mysql.com/read.php?10,2325,146615#msg-146615) La tua riga di comando è corretta, in particolare la parte '-usomeusername'? Questo è letteralmente "-u" e "someusername" incollati insieme. –

1

se hai creato db con successo, probabilmente hai tale conf. in database.yml:

development: 
    adapter: mysql2 
    encoding: utf8 
    reconnect: false 
    database: site_db 
    pool: 5 
    username: root 
    password: secret 
    socket: /var/run/mysqld/mysqld.sock 

è possibile visualizzare il database (sitedb) con phpMyAdmin o terminale

0

Assicurarsi di connettersi a MySQL con il comando -u, come root, quindi elencherà la banche dati. (fornire ciò che si trova nel file database.yml). Mi stavo semplicemente collegando senza -u e non vedevo nulla. Molto probabilmente connesso con il mio utente locale e non ho avuto permessi per visualizzare i database! oops!

0

in base alla mia recente esperienza penso di aver sbagliato l'opzione di comando quando hai inserito credenziali mysql. Nel mio caso ho inserito la seguente:

[email protected]# mysql -u root -opabc123 

dove -o e -p è opzioni di comando e il resto: è abc123 password. qui ho accidentalmente inserito l'opzione di comando -o che è stata la causa della scomparsa dei database. (vedi -o-one-database.)

Non passare -o e provare.

speranza che questo aiuta