Учитывая, что у меня есть следующие версии в таблице schema_migrations:
| 20180822231257 |
| 20180822234804 |
| 20180829011800 |
| 20180924212812 |
И учитывая, что я извлекаю конкретную ветку моего проекта со следующими миграциями (ниже я опускаю полное имя файла для db / migrate/*.rb files):
| 20180822231257 |
| 20180822234804 |
20180827225521
20180828172831
| 20180829011800 |
20180911233144
20180913172923
| 20180924212812 |
Как видите, файлы без каналов представляют файлы в моей папке db / migrate, которых нет в файле schema_migrations в базе данных.
Теперь, когда я пытаюсь запустить rails s, я получаю следующую ошибку:
Migrations are pending. To resolve this issue, run:
bin/rake db:migrate RAILS_ENV=development
Когда я посмотрел на schema.rb, я заметил эту строку:
ActiveRecord::Schema.define(version: 20180924212812) do
Так как вывидно, schema.rb указывает на последнюю версию.
Однако в файле schema.rb содержится некоторый код, которого нет в моей базе данных, например оператор create_table для одной из тех миграций, которых нет в базе данных:
create_table "some_table", force: :cascade do |t|
t.integer "some_id", limit: 4
t.integer "default_view", limit: 4
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
Так что, несмотря начто последняя версия миграции такая же, обнаруживает ли Rails, что некоторые старые миграции не представлены в текущей таблице schema_migrations?
(Как примечание, я думаю, что причина, по которой обе ветви имеют одинаковую последнюю фиксацию, состоит в том, что я думаю, что кто-то выбрал конкретную миграцию на другую ветку, но не другие миграции).