最近我遇到了一种情况,由于我犯了一个配置错误,我不得不将一个备份数据库从 Heroku 恢复到我的本地设置。
这在 Heroku 的帖子中非常直截了当:
https://devcenter.heroku.com/articles/heroku-postgres-import-export:
$ heroku pgbackups:capture
$ curl -o latest.dump `heroku pgbackups:url`
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
问题变成了在还原之后,一些旧的(还原前)索引数据仍在使用新还原的数据提供服务。即在还原和数据库迁移之后似乎仍有一些剩余的索引数据。请注意,在恢复之前,我没有清除或删除旧数据库或对旧数据库做任何事情......所以显然有一些数据仍然存在预恢复......表已经消失,但索引可能仍然存在。
我怀疑如果我对表进行了一些更改,这将导致对我所做的任何更改进行部分重新索引,并且将是对问题的某种类型的部分修复。果然,当我通过控制台更改记录时,剩余数据已更新(现在是正确的)。
所以我的问题是多部分的......
为什么还原没有清除数据库中的所有内容并“从头开始”?(还有其他方法吗?)
是否有更好的编程方式通过 rake 或控制台重新索引表?
对于 searchkick,我使用:
rake searchkick:reindex CLASS=Blog
在模型中,我使用类似的东西:
blog.reindex
但是我还没有找到一种命令/函数方法来做一个基本的表重新索引(没有某种类型的黑客来触及每条记录)。