| 20180822231257 |
| 20180822234804 |
| 20180829011800 |
| 20180924212812 |
假设我使用以下迁移签出了项目的一个特定分支(下面我省略了db/migrate/*.rb文件的完整文件名):
| 20180822231257 |
| 20180822234804 |
20180827225521
20180828172831
| 20180829011800 |
20180911233144
20180913172923
| 20180924212812 |
如您所见,不带管道的文件表示数据库的schema\u migrations文件中没有的mydb/migrate文件夹中的文件。
现在,当我尝试运行rails时,出现以下错误:
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包含一些不在我拥有的数据库中的代码,例如不在数据库中的某个迁移的create\u 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\u migrations表中不存在一些较旧的迁移?