2013-05-26 2 views
20

hi im в настоящее время изучает рельсы и следуя инструкциям. инструкции должны были редактировать файл миграции после того, как я создал приложение, а затем запустить rake db: migrate, а затем rake db: create.новое для рельсов, настройка db, а затем запуск rake db: create/migrate

я отредактировал файл перенос на это:

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 

тогда, когда я бежать «грабли БД: мигрировать» я получил ошибку

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

после того, как я должен беги «грабли БД: создать», то им получать это

user_auth_development already exists 
user_auth_test already exists 
+0

мне нужно сделать, чтобы запустить БД: создавать и БД: мигрировать? или это настройка alreay после редактирования файла миграции? –

+0

Это означает, что таблица уже существует. Может быть, предыдущая миграция уже создала его. –

ответ

43

вы запускаете rake db:create один раз и только один раз, и запустить его пихты т. Затем вы запускаете rake db:migrate каждый раз, когда вы добавляете/изменяете миграцию. Вы уже выполнили эту миграцию или указали на уже существующую базу данных и уже имеете таблицу с именем users. Я предполагаю, что вы выполнили миграцию уже один раз, и в этом случае вы, вероятно, будете рады. Если вы хотите уничтожить БД и начать все сначала, сделайте rake db:drop db:create db:migrate.

+0

спасибо! это решило это. –

+0

Большое спасибо! Я не знаю, почему они не покрывают это в руководствах. Также он не объясняет, как именно вы правильно обновляете миграцию. Когда я обновляю файл миграции и запускаю 'rake db: migrate', ничего не происходит. Я знаю, что делаю что-то не так, но я не знаю, что я должен делать. Должен ли я перенаправить новое название или что-то еще? – Nathan

+0

Вообще говоря, вы не должны изменять файл миграции. Если вы действительно знаете, что делаете, вы узнаете, когда это приемлемо. Если у вас есть какие-либо сомнения, не изменяйте; вместо этого создайте новый файл миграции («rails generate migration»). Есть одно небольшое исключение: если вы хотите изменить самую последнюю миграцию, вы можете сделать это, а затем запустите команду 'rake db: migrate: redo', которая отбросит и повторит последнюю миграцию. Это не всегда возможно; это зависит от того, что последняя миграция обратима (не все). Вы не должны делать этого, если вы уже передали его в общий репозиторий. –

15

Мы можем просто дать, он будет делать все реки задачу, которая требуется для создания базы данных и миграций

rake db:setup

+0

это не сработало для меня ... это говорит, что файл схемы еще не существует ... –

+0

Искали эту простую часть информации немного ... Было слишком тривиально, чтобы легко найти ее. Он будет генерировать базу данных из моделей. – nembleton

 Смежные вопросы

  • Нет связанных вопросов^_^