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

时间:2014-05-19 13:07:12

标签: django git sqlite heroku

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

情景:

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

有没有办法防止这种情况发生?

2 个答案:

答案 0 :(得分:3)

Heroku does not provide a persistent filesystem

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

最简单的解决方案可能是从SQLite迁移到PostgreSQL,后者在Heroku(以及Django)中得到很好的支持,每次部署时都不会丢失数据。

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

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

答案 1 :(得分:0)

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