2016-07-31 5 views
1

У меня возникают проблемы с удалением таблицы, которую я создал в процессе миграции.drop_table миграция не работает

Выполнение rake db:migration VERSION=0 представляется успешным, но, глядя на mysql, таблица все еще присутствует, и schema.rb данные не удаляются.

def up 
create_table :subjects do |t| 
    t.string "name" 
    t.integer "position" 
    t.boolean "visible", :default => false 
    t.timestamps 
end 
def down 
    drop_table :subjects 
end 

Опечатка Отредактировано: предмет -> предметы

это происходит только тогда, когда я использую def down. def change не дает мне проблем и удаляет таблицу.

ответ

1

вы должны переписать это так:

def up 
    drop_table :subjects 
end 

def down 
    create_table :subjects do |t| 
    t.string "name" 
    t.integer "position" 
    t.boolean "visible", :default => false 
    t.timestamps 
    end 
end 

принять к сведению, как : субъекты используется в противоположность : субъект.

После этого вы должны теперь запустить рейк db:migrate. Чтобы восстановить таблицу, запустите rake db:rollback. Метод up должен описывать миграцию и down СПОСОБА откате

+0

Я попытался использовать 'def change', и он работает плавно. не уверен, почему 'def up/down' не производит тот же результат, который удаляет таблицу': themes'. это действительно меня беспокоит. – user1735120

1

Ваша миграция это хорошо, но она должна быть drop_table :subjects не drop_table :subject

+0

спасибо, что указал на мою опечатку. при редактировании ': subject' я все равно получаю тот же результат. я могу откат к моему «VERSION = 0» успешно, но таблицы '' все еще остаются. – user1735120

0

Пожалуйста, попробуйте:

rake db:migrate:down VERSION=xxx 

где xxx является версию вашего файла миграции. Например, если ваше имя файла миграции составляет 20160710042640_create_subjects.rb, тогда запустите db:migrate:down VERSION=20160710042640

+0

Я могу видеть статус 'down', когда я выполнил ваш код и не обнаружил ошибки. но проверяя mysql, таблица все еще там. – user1735120

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