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



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

场景:

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

有办法防止这种情况吗?

Heroku不提供持久的文件系统。

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

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

如果你坚定地使用SQLite,你可能有一些其他的选择:

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

您应该将db文件添加到.gitignore

最新更新