Ответ 1
Решение (см. мой комментарий): run
rake db:migrate:status
и исправить проблемы, которые вы там найдете. В этом случае (при последующем наблюдении за @MarkThomas) вы можете проверить, все ли файлы, которые вам нужны, на месте.
Я пишу свое первое приложение Rails. Я запустил несколько команд rails generate model ...
и rake db:migrate
, но теперь я хочу изменить свою модель данных и поэтому вам нужно отменить несколько миграций.
docs говорит, что я могу отменить миграцию с помощью rake db:rollback
, но это не работает. Когда я запускаю это в консоли, компьютер думает в течение нескольких секунд, но не вносит никаких изменений в db/migrate/
или db/migrate/schema.rb
. На консоли не выводится вывод.
Правильно ли это поведение? Не следует ли db:rollback
менять мою схему? Если да, может ли кто-нибудь подумать, почему он может не работать?
Я нахожусь в Rails v. 3.2.6.
ИЗМЕНИТЬ
В настоящий момент rake db:migrate:status
дает
database: db/development.sqlite3
Status Migration ID Migration Name
--------------------------------------------------
up 20120617191211 Create irs
up 20120701154357 Create paths
up 20120701154421 Create nodes
up 20120702151447 ********** NO FILE **********
down 20120702155140 Create venues
down 20120703233833 Remove path from venues
Решение (см. мой комментарий): run
rake db:migrate:status
и исправить проблемы, которые вы там найдете. В этом случае (при последующем наблюдении за @MarkThomas) вы можете проверить, все ли файлы, которые вам нужны, на месте.
Если
rake db:migrate:status
дает вам миграцию, в которой говорится
up 20120702151447 ********** NO FILE **********
Тогда лучше всего было бы сделать (обратите внимание, что следующая команда удалит базу данных):
rake db:reset
переделать все миграции. Если последняя миграция отсутствует, то schema.rb
будет иметь последнюю миграцию, которую будет искать rake db:migrate
:
ActiveRecord::Schema.define(:version => 20120702151447) do
Измените это число до последнего в папке переноса.
Это то, что сработало для меня. Объедините шаги, указанные в этом ответе, и прокомментируйте их по дБ.
class CreateNothing < ActiveRecord::Migration
def change
end
end