【发布时间】:2019-03-12 12:07:45
【问题描述】:
鉴于我在 schema_migrations 表中有以下版本:
| 20180822231257 |
| 20180822234804 |
| 20180829011800 |
| 20180924212812 |
鉴于我使用以下迁移检查了我的项目的特定分支(下面我省略了 db/migrate/*.rb 文件的完整文件名):
| 20180822231257 |
| 20180822234804 |
20180827225521
20180828172831
| 20180829011800 |
20180911233144
20180913172923
| 20180924212812 |
如您所见,没有管道的文件代表我的 db/migrate 文件夹中的文件,这些文件不在数据库的 schema_migrations 文件中。
现在当我尝试运行 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 指向的是最新版本。
但是,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 表中不存在一些较旧的迁移?
(顺便说一句,我认为两个分支具有相同最新提交的原因是因为我认为有人将特定迁移挑选到另一个分支而不是其他迁移)。
【问题讨论】:
标签: ruby-on-rails