2013-05-26 16 views
20

ciao al momento sto imparando le rotaie e seguendo un tutorial. le istruzioni erano di modificare il file di migrazione dopo aver creato l'app, quindi eseguire rake db: migrate, quindi rake db: create.nuovo su rotaie, impostazione db poi rastrello in esecuzione db: creare/migrare

Ho modificato il file di migrazione a questo:

class CreateUsers < ActiveRecord::Migration 
    def change 
    create_table :users do |t| 
     t.string :username 
     t.string :email 
     t.string :encrypted_password 
     t.string :salt 
     t.timestamps 
    end 
    end 
end 

poi quando ho incontrato 'rake db: migrate' ho ottenuto un errore

Mysql2::Error: Table 'users' already exists: CREATE TABLE `users` ... 

dopo Dovrei run 'rake db: creare', allora im ottenendo questo

user_auth_development already exists 
user_auth_test already exists 
+0

ho bisogno di correre db: creare e db: la migrazione? o è questa impostazione di alreay una volta che ho modificato il file di migrazione? –

+0

Significa che la tabella esiste già. Può essere una migrazione precedente già creata. –

risposta

43

si esegue rake db:create una volta e solo una volta, e lo si esegue abeti t. Quindi esegui rake db:migrate ogni volta che aggiungi/modifica una migrazione. Hai già eseguito questa migrazione o stai puntando a un database già esistente e già contiene una tabella denominata users. La mia ipotesi è che hai già eseguito la migrazione una volta, nel qual caso probabilmente sei a posto. Se si desidera nuare il DB e ricominciare da capo, fare rake db:drop db:create db:migrate.

+0

grazie! questo lo ha risolto. –

+0

Grazie mille! Non so perché non lo coprono nelle guide. Né spiega come esattamente si proceda all'aggiornamento corretto delle migrazioni. Quando aggiorno il file di migrazione ed eseguo 'rake db: migrate' non succede nulla. So che sto facendo qualcosa di sbagliato, ma non so cosa dovrei fare. Devo dare alla migrazione un nuovo nome o qualcosa del genere? – Nathan

+0

In generale, non è necessario modificare un file di migrazione. Se sai davvero cosa stai facendo, saprai quando è accettabile. Se hai dei dubbi, non modificare; invece, crea un nuovo file di migrazione ('rails generate migration'). C'è una piccola eccezione a questa: se si desidera modificare la migrazione più recente, è possibile farlo, quindi eseguire 'rake db: migrate: redo', che lascerà cadere e rieseguirà l'ultima migrazione. Questo non è sempre possibile; dipende dall'ultima migrazione reversibile (non tutti lo sono). Non dovresti farlo se hai già eseguito il commit su un repository condiviso. –

15

Possiamo semplicemente dare, farà tutto il task rake che si richiedono per la creazione del database e la migrazione

rake db:setup

+0

questo non ha funzionato per me ... dice che il file dello schema non esiste ancora ... –

+0

Sono stato alla ricerca di quella semplice informazione un po '... Era troppo banale per trovarlo facilmente sembra. Genererà il database dai modelli. – nembleton

Problemi correlati