【问题标题】:schema.rb updated with pending migrationsschema.rb 更新了挂起的迁移
【发布时间】:2013-02-05 01:14:11
【问题描述】:

我的 schema.rb 文件更新了我在迁移文件中提到的所有更改。但是,当我尝试设置我的数据库时,

我收到一条错误消息,提示“您有 30 个待定迁移”。

据我所知,如果未运行迁移,schema.rb 不会得到更新。

为了克服这个问题,我尝试执行 rake db:schema:load,然后尝试为数据库播种。即便如此,我还是收到一条错误消息,提示“您有 30 个待处理的迁移”。

有人可以帮我吗?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 rails-migrations


    【解决方案1】:

    你试过了吗

    rake db:migrate
    

    ?

    【讨论】:

    • 是的,我做到了。它给我一个错误,说“xyz”列已经存在......这正是 30 个待处理迁移中的第一个。
    • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post
    • @MurthyUpadhyayula 您的数据库中有一些双重内容吗?我之前也遇到过这个问题,我试着让我的迁移不会与我的数据库上的任何东西发生冲突..
    • @David 谢谢先生,我只是想帮忙,因为我的名声让我无法对任何帖子发表评论,而且由于我的知识还没有进步到描述答案,我只是想帮忙我知道的,谢谢
    • 如果您说“双重事物”是指两个存储库,那么可以。我只是在两个 repos 中的常见 gem 使用的几个配置文件中都有常见的名称空间名称。我刚刚更改了命名空间名称,事情就开始起作用了。虽然我在这方面,但我也会说 bdares 是对的。我们可以删除导致问题的迁移文件并运行设置。您可以稍后拉取它们(如果您的 repo 使用了一些 SVC):)
    【解决方案2】:

    迁移是管理对当前架构的更改的一种方式。

    如果您的架构已经与您想要的匹配,您可以放弃迁移并继续为您的数据库播种。当然,rake db:seed 将首先尝试运行任何迁移,因此请先从文件夹中删除它们。

    Rails 会创建一个名为 migrations 的表,并实际记录已在该数据库上运行的迁移的 ID。如果您将应用程序部署到一个新的数据库实例,并在其上运行rake db:schema:load,那么它的migrations 表将为空,并且每当调用migrate 时您都会遇到问题,除非您摆脱不需要的迁移文件。

    【讨论】:

    • 我同意你的做法。我的应用程序处于版本控制之下,如果我删除了迁移文件,我将需要稍后将它们拉出来。这确实帮助我运行种子脚本没有任何问题。但是后来,我意识到我的问题的根本原因:我在当前和我克隆的另一个存储库中使用 redis gem。在其他几个配置文件中更改命名空间名称帮助我完成了整个数据库设置过程,没有任何差异。谢谢你的回答,至少我学到了一些我不知道的东西。 :)
    猜你喜欢
    • 2013-12-26
    • 2015-06-10
    • 2018-03-12
    • 1970-01-01
    • 2015-10-31
    • 2017-09-19
    • 2011-07-10
    • 1970-01-01
    • 2015-10-28
    相关资源
    最近更新 更多