运行 rake db:migrate 后,我的架构不会更新

Posted

技术标签:

【中文标题】运行 rake db:migrate 后,我的架构不会更新【英文标题】:My schema won't update after I run rake db:migrate 【发布时间】:2016-10-31 03:23:34 【问题描述】:

运行后:

rails g model category

并更新我的迁移以显示:

class CreateCategories < ActiveRecord::Migration 
  def change create_table :categories do |t| 
    t.string :name t.text :description
    t.timestamps null: false
   end
   end
end

然后运行:

rails g model albumcategories

并更新我的迁移以显示:

class CreateAlbumCategories < ActiveRecord::Migration
def change
    create_table :album_categories do |t|
        t.references :album, index: true, foreign_key: true
        t.references :category, index: true, foreign_key: true

        t.timestamps null: false
    end
    end
end

我跑了 rake db:migrate 我得到以下输出:

    20160627163454 CreateCategories: migrating =================================
    -- create_table(:categories)
   -> 0.0768s
== 20160627163454 CreateCategories: migrated (0.0769s) ========================

== 20160627163757 CreateAlbumCategories: migrating ============================
-- create_table(:album_categories)
   -> 0.1252s
== 20160627163757 CreateAlbumCategories: migrated (0.1253s) ===================

但是这些新表都没有出现在我的架构中。 我已经在控制台中对它们进行了测试,并且能够连接到它们。即@album.categories.count 给我一个“0”的输出 有谁知道这里发生了什么?我的架构不会更新似乎很奇怪,但这些表在控制台中仍然可用。数据库过去一直困扰着我,所以我不想为了发现我需要重做很多工作而走得太远。任何见解将不胜感激。

【问题讨论】:

Rails: I update migration file then run db:migrate, but my schema isn't updating的可能重复 我之前确实看到过这个并运行了它建议的命令,db:migrate:redo、db:rollback 等。然后重新运行这些迁移。他们仍然没有出现在我的架构中。再次重做那些有趣的事情是我达到了一个点,它不会让我进一步回滚'== 20160615222357 RefilePostgresMigrationTo130:恢复================== === 耙子中止! StandardError:发生错误,此迁移和所有后续迁移已取消:ActiveRecord::IrreversibleMigration ' 这些迁移记录在您的schema_migrations 表中吗?你能把表格里的东西贴出来吗? 在我发布文件之前,因为它看起来非常大,“schema_migrations 表”会在 db/structure.sql 文件中,只是在 schema.rb 或其他地方吗? @Lenocam 通常,您希望避免可逆迁移,主要是为了避免处理此类问题。除此之外,您的架构“版本”可能与您的迁移文件名时间戳不同步。由于文件名中有较早的时间戳,我的架构文件没有更新某些迁移文件,过去我遇到过问题。 【参考方案1】:

尝试使用以下命令: rake db:schema:load

【讨论】:

以上是关于运行 rake db:migrate 后,我的架构不会更新的主要内容,如果未能解决你的问题,请参考以下文章

rake db:migrate 在开发 AWS Beanstalk 中运行

如何使用 rake db:migrate 仅回滚一步

获取:“迁移待定;运行 'bin/rake db:migrate RAILS_ENV=development' 来解决此问题。”克隆和迁移项目后

如何运行 db:migrate 从另一个带参数的 rake 任务?

rake db:migrate不执行任何操作

Can't rake:db migrate - 继续让 'rake 中止!加载错误' [重复]