防止Django SQLite数据库在推送到Heroku时被覆盖

New*_*wtt 6 git sqlite django heroku

我有一个Django应用程序,它在其模型中存储了大量数据.问题是,每当我部署到Heroku时,即使它是一个小的更改,具有正确数据的远程数据库也会被本地虚拟数据数据库覆盖.

场景:

我有一个my_db远程的db文件.现在,当推送到heroku时,我只是git add> git commit只有包含更改的文件而不是整个项目.我的问题在于,它仍以某种方式用本地数据覆盖远程数据库.

有办法防止这种情况吗?

Chr*_*ris 5

Heroku不提供持久文件系统

我开发过的大多数 Heroku 应用程序都使用 PostgreSQL 作为数据库,所以这不是问题。但 SQLite 只是位于某个目录中的一个文件,因此每次部署数据库时都会丢失。

最简单的解决方案可能是从 SQLite 迁移到 PostgreSQL,它在 Heroku(和 Django)上得到了很好的支持,并且每次部署时都不会丢失数据。

如果您坚定地致力于 SQLite,您可能还有其他一些选择:

  • 在每次推送之前备份数据库文件并在推送之后恢复它。
  • 将生产数据库添加到 Git 存储库,以便它将与您的应用程序一起部署(请注意,我不建议这样做)。
  • 许多用户使用 Amazon S3 来存储其他类型的资产。您也许可以对数据库使用类似的过程,但我怀疑这样做会存在一些非常重大的安全风险。