运行 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 中运行
获取:“迁移待定;运行 'bin/rake db:migrate RAILS_ENV=development' 来解决此问题。”克隆和迁移项目后