max*_*der 52 migration git ruby-on-rails
我创建了一个迁移,运行rake db:migrate
,这突破了我的db/schema.rb版本号.然后我做了一个git fetch origin master
,看到我的团队成员发生了变化.所以我做了一个git stash
和一个git rebase FETCH_HEAD
,然后是一个git stash pop
.这导致db/schema.rb与版本号冲突.
Upstream>>>
ActiveRecord::Schema.define(:version => 20110930179257) do
===========
ActiveRecord::Schema.define(:version => 20110930161932) do
<<<Stashed
Run Code Online (Sandbox Code Playgroud)
我认为适当的修复方法是手动将版本号增加到高于上游的值.
这是明智的还是坏消息?
谢谢,马克斯
Wiz*_*Ogz 87
如果您当前的数据库具有正确的架构,您应该:
运行挂起的迁移(如果有)
rake db:migrate
Run Code Online (Sandbox Code Playgroud)schema.rb
从当前的数据库模式中覆盖您的
rake db:schema:dump
Run Code Online (Sandbox Code Playgroud)并承诺
接受上游版本并rake db:migrate
像往常一样运行。
不要担心您创建的迁移(低于 Upstream version 20110930179257
)。ActiveRecord 使用一个表schema_migrations
来放置所有已运行的迁移。如果您的迁移不在列表中而是在db/migrate
目录中,则 ActiveRecord 将运行它们。
很容易认为它实际上是这一行:
ActiveRecord::Schema.define(:version => 20110930179257)
它定义了最新的迁移运行,因此不会运行低于它的版本的迁移。幸运的是,事实并非如此。Rails 将运行db/migrate
文件夹中但尚未在schema_migrations
表中的任何迁移。
归档时间: |
|
查看次数: |
20633 次 |
最近记录: |