我正在为我的数据库(基本版)使用 Heroku Postgres 插件。Ruby Sequel 是我用于模式管理的 ORM。
最近,一些迁移没有更新数据库模式。
我运行迁移 19, 019_add_last_unique_story_to_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_table 表中。生产数据库和本地数据库都存在此问题。我已尝试多次迁移并检查数据库 url 是否正确。
我的快速修复:我将上述代码复制并粘贴到第 20次迁移 020_test.rb 中,然后运行我的 rake 迁移任务rake db:migrate:up
。这成功地更新了数据库。
有谁知道这里会发生什么?为什么有些迁移运行成功,更新了迁移版本,却没有更新任何列?这可能是命名问题、缓存问题还是 Heroku 问题?谢谢你的帮助!