因此,在开发过程中的某个时刻,我添加了一个迁移以向我的用户表中添加一列。此列添加了“美元”属性。之后,我决定通过编写删除迁移来删除“美元”属性。后来我不小心删除了初始迁移以添加美元,因此为了解决我在本地 SQLite 数据库上运行 db:migrate 时遇到的错误,我还删除了RemoveDollarsFromUsers
迁移。
似乎这已经解决了问题,直到我部署到heroku。使用 重置数据库后heroku pg:reset DATABASE
,我运行heroku run rake db:migrate
并收到一条错误消息,指出“美元”不是用户的属性。日志文件显示它试图运行我之前删除的 RemoveDollarsFromUsers 迁移。
所以我仔细检查了我的 repo 是否是最新的,然后我尝试完全重置并在 heroku 上启动一个新应用程序,认为 heroku 可能正在记住旧的迁移。使用新的 heroku 应用程序时,我遇到了同样的错误,即使我正在推送的 repo 根本不应该对旧的迁移文件有任何引用。
这是一个git问题吗?我唯一能想到的是 git 正在通过 RemoveDollarsFromUsers 迁移推送旧版本,否则 heroku 怎么可能知道呢?