Ruby Sequel迁移正在运行,但无法添加列

Ruby Sequel迁移正在运行,但无法添加列,ruby,heroku,sequel,heroku-postgres,sequel-gem,Ruby,Heroku,Sequel,Heroku Postgres,Sequel Gem,我正在为我的DB(基本版本)使用Heroku Postgres插件。Ruby Sequel是我用于模式管理的ORM 最近,一些迁移没有更新DB模式 我运行迁移19,019\u将\u last\u unique\u story\u添加到\u user.rb: Sequel.migration do up do alter_table(:state_tables) do add_column :last_unique_story, Integer, default: 0

我正在为我的DB(基本版本)使用Heroku Postgres插件。Ruby Sequel是我用于模式管理的ORM

最近,一些迁移没有更新DB模式

我运行迁移19,019\u将\u last\u unique\u story\u添加到\u user.rb:

Sequel.migration do
  up do
    alter_table(:state_tables) do
      add_column :last_unique_story, Integer, default: 0
      add_column :last_unique_story_read?, TrueClass, default: true
    end
  end
  down do
    alter_table(:state_tables) do
      drop_column :last_unique_story
      drop_column :last_unique_story_read?
    end
  end
end
这会将DB[:schema_info]从版本18更新到版本19,但不会向:state_表中添加任何列。生产数据库和本地数据库都存在此问题。我尝试了多次迁移,并检查了db url是否正确

我的快速解决方案: 我将上述代码复制并粘贴到第20次迁移020_test.rb中,然后运行我的rake迁移任务
rake db:migrate:up
。这成功地更新了数据库


有人知道这里会发生什么吗?为什么有些迁移成功运行,更新迁移版本,但不更新任何列?这可能是命名问题、缓存问题还是Heroku问题?谢谢你的帮助

这取决于rake任务的编写方式。Sequel不提供rake任务,因此您必须检查rake任务的来源

通常,迁移不会添加列的唯一原因是迁移没有运行。例如,如果数据库中的架构版本已经是19,那么在向上迁移时它不会运行迁移19。这可以解释为什么当您将它复制到migration 20,然后向上迁移时,它会运行迁移。如果使用数据库记录器运行migrator,Sequel将记录迁移活动(除SQL外)