如何解决 Rails 与 db/structure 的合并冲突。sql
How to solve Rails merge conflicts with db/structure.sql
有人告诉我,如果在我的 b运行ch 中进行新的迁移并且与 db/structure.sql
文件中的 master 发生合并冲突,我应该按照以下步骤操作。
- 在b运行ch中,
bundle exec rake db:drop
- 在b运行ch中,
bundle exec rake db:create
- 硕士,
bundle exec rake db:structure:load
- 在b运行ch中,
git merge master
- 在b运行ch中,
bundle exec rake db:migrate
如果我只想对齐 db/structure.sql
文件,那么第 1-3 步需要什么?通过在 master 中合并,难道我没有得到新的迁移,我还 运行 然后通过 运行 它们,它会更新我的 db/structure.sql
?
您是对的,删除并重新创建数据库以解决 db/structure.sql
(或 db/schema.rb
中的冲突)有点荒谬。您应该能够简单地 运行 新迁移并从 db:migrate
.
获得更新的 structure.sql
db/stucture.sql
文件只是数据库所见的数据库结构(而 db/schema.rb
是 ActiveRecord 有限视图中的数据库结构)。如果 structure.sql
中存在冲突,则仅表示:
- 合并涉及更改数据库结构的新迁移。
- 您要合并的分支有 运行 不同顺序的迁移,因此模式并不完全匹配,即使它们在功能上可能相同。
(1) 通过 运行 新迁移解决,并可能修复迁移本身存在冲突的任何地方。快速 bin/rake db:migrate
应该可以解决这个问题,并为您留下一个新的无冲突 db/structure.sql
.
(2)同理求解。您也可以手动 bin/rake db:structure:dump
重建 db/structure.sql
,但只有当您确定自己确实遇到这种情况时才会这样做;但实际上,db:migrate
会处理它,所以没有理由不只是 db:migrate
.
db/structure.sql
(或db/schema.rb
)中的冲突并不表示 db/structure.sql
本身存在问题,它们表示 [=49] 的数据库存在问题=] 不能直接看到。解决冲突的方法是修复数据库。
您可以 运行 bundle exec rake db:structure:dump
重新生成 db/structure.sql 文件。
对于 schema.rb 我找到了
有人告诉我,如果在我的 b运行ch 中进行新的迁移并且与 db/structure.sql
文件中的 master 发生合并冲突,我应该按照以下步骤操作。
- 在b运行ch中,
bundle exec rake db:drop
- 在b运行ch中,
bundle exec rake db:create
- 硕士,
bundle exec rake db:structure:load
- 在b运行ch中,
git merge master
- 在b运行ch中,
bundle exec rake db:migrate
如果我只想对齐 db/structure.sql
文件,那么第 1-3 步需要什么?通过在 master 中合并,难道我没有得到新的迁移,我还 运行 然后通过 运行 它们,它会更新我的 db/structure.sql
?
您是对的,删除并重新创建数据库以解决 db/structure.sql
(或 db/schema.rb
中的冲突)有点荒谬。您应该能够简单地 运行 新迁移并从 db:migrate
.
structure.sql
db/stucture.sql
文件只是数据库所见的数据库结构(而 db/schema.rb
是 ActiveRecord 有限视图中的数据库结构)。如果 structure.sql
中存在冲突,则仅表示:
- 合并涉及更改数据库结构的新迁移。
- 您要合并的分支有 运行 不同顺序的迁移,因此模式并不完全匹配,即使它们在功能上可能相同。
(1) 通过 运行 新迁移解决,并可能修复迁移本身存在冲突的任何地方。快速 bin/rake db:migrate
应该可以解决这个问题,并为您留下一个新的无冲突 db/structure.sql
.
(2)同理求解。您也可以手动 bin/rake db:structure:dump
重建 db/structure.sql
,但只有当您确定自己确实遇到这种情况时才会这样做;但实际上,db:migrate
会处理它,所以没有理由不只是 db:migrate
.
db/structure.sql
(或db/schema.rb
)中的冲突并不表示 db/structure.sql
本身存在问题,它们表示 [=49] 的数据库存在问题=] 不能直接看到。解决冲突的方法是修复数据库。
您可以 运行 bundle exec rake db:structure:dump
重新生成 db/structure.sql 文件。
对于 schema.rb 我找到了