我写了一个迁移,其中我想删除一些符合条件的数据库条目。
这是我在迁移文件中的代码。
class RemoveRedundantVersions < ActiveRecord::Migration[5..1]
def up
delete_version_entries
end
def down; end
def delete_version_entries
# Checks some conditions and delete objects
end
end
在rails db:migrate
上,这是输出:
== 20190726055203 RemoveRedundantVersions: migrating ==========================
== 20190726055203 RemoveRedundantVersions: migrated (12.2631s) ================
在rails db:migrate:status
上,这是我看到的:
down 20190726055203 Remove redundant versions
由于某种原因,迁移无法成功,并退回到down
方法。因此,当我重新运行rails db:migrate
时,rails将重试相同的迁移。
我在这里处理的db表有很多条目,例如超过250万个条目。查询它们是否可能是超时问题?
我知道并且正在使用for_each
进行数据库查询,因此迁移一次可以在一小部分数据上运行。
有人能想到此迁移未能完成所需工作的原因吗?