2013-05-26 14 views
20

hi im obecnie uczenie szyn i po samouczku. instrukcje miały na celu edycję pliku migracji po utworzeniu aplikacji, a następnie uruchomienie programu rake db: migrate, a następnie rake db: create.nowość w szynach, konfiguracja db, następnie uruchomienie prowizji db: tworzenie/migracja

ja już edytowany plik migracji do tego:

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 

wtedy kiedy Zabrakło mi „rake db: migrować” mam błąd

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

po Mam run 'rake db: create', to im się to

user_auth_development already exists 
user_auth_test already exists 
+0

muszę uruchomić db: tworzenie i db: migrować? lub czy to ustawienie daty po edycji pliku migracji? –

+0

Oznacza to, że tabela już istnieje. Być może poprzednia migracja już go utworzyła. –

Odpowiedz

43

uruchomić rake db:create raz i tylko raz, i go uruchomić jodły t. Następnie uruchamiasz rake db:migrate za każdym razem, gdy dodajesz/zmieniasz migrację. Ta migracja została już uruchomiona lub wskazuje się na bazę danych, która już istnieje i zawiera już tabelę o nazwie users. Domyślam się, że raz przeprowadziłeś już migrację, w takim przypadku prawdopodobnie jesteś gotowy. Jeśli chcesz odrzucić DB i zacząć od nowa, wykonaj rake db:drop db:create db:migrate.

+0

dzięki! to rozwiązało to. –

+0

Dziękuję bardzo! Nie wiem, dlaczego nie obejmują tego w przewodnikach. Nie wyjaśnia też, w jaki sposób dokładnie aktualizujesz migracje. Kiedy aktualizuję plik migracyjny i uruchamiam 'rake db: migrate' nic się nie dzieje. Wiem, że robię coś złego, ale nie wiem, co powinienem robić. Czy muszę nadać migracji nową nazwę lub coś takiego? – Nathan

+0

Ogólnie mówiąc, nie należy modyfikować pliku migracji. Jeśli naprawdę wiesz, co robisz, będziesz wiedzieć, kiedy jest to dopuszczalne. Jeśli masz jakiekolwiek wątpliwości, nie modyfikuj; zamiast tego utwórz nowy plik migracji ('rails generuje migrację'). Istnieje jeden niewielki wyjątek: jeśli chcesz zmodyfikować najnowszą migrację, możesz to zrobić, a następnie uruchom 'rake db: migrate: redo', co spowoduje spadek i ponowne uruchomienie ostatniej migracji. Nie zawsze jest to możliwe; zależy to od tego, czy ostatnia migracja jest odwracalna (nie wszystkie są). Nie powinieneś tego robić, jeśli już to zrobiłeś we współużytkowanym repozytorium. –

15

Możemy po prostu dać, to zrobi wszystko zadanie nachylenia, który wymaga do tworzenia bazy danych i migracji

rake db:setup

+0

to nie działa dla mnie ... to znaczy, że plik schematu jeszcze nie istnieje ... –

+0

Szukałem tej prostej informacji trochę ... Byłem zbyt trywialny, żeby ją łatwo znaleźć. Wygeneruje bazę danych z modeli. – nembleton