防止Django SQLite db在推送到Heroku时被覆盖

防止Django SQLite db在推送到Heroku时被覆盖,django,git,sqlite,heroku,Django,Git,Sqlite,Heroku,我有一个Django应用程序,它在其模型中存储了大量数据。问题是,每当我部署到Heroku时,即使只是一个小小的更改,包含正确数据的远程数据库也会被包含伪数据的本地数据库覆盖 情景: 我有一个数据库文件my_db,它是远程的。现在,当推到heroku时,我只是git添加git提交仅包含更改的文件,而不是整个项目。我的问题在于,它仍然以某种方式用本地数据覆盖远程数据库 有没有办法防止这种情况 您应该将db文件添加到Heroku 我研究过的大多数Heroku应用程序都使用PostgreSQL作为数据

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

情景:

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


有没有办法防止这种情况

您应该将db文件添加到Heroku

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

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

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

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

这是一个有效的答案。但是,你知道为什么它仍然覆盖我所有的文件吗?我只能猜测,因为我不知道heroku或者你是如何设置部署的。但是,即使您没有添加或提交本地db文件,您的存储库中似乎仍有该文件的一个版本。如果通过签出部署代码更改,则该db文件将覆盖您的生产数据库如何做选项2,即将生产数据库添加到git存储库?@devhaven.herokuapp.com,我强烈建议您不要这样做,但您只需像其他文件一样将数据库文件添加到存储库中,并确保在必要时将更改提交给它。请注意,如果您打算修改Heroku上的数据库,这个选项是一个特别糟糕的主意:我认为您不能在那里提交更新,临时文件系统可能仍然是一个问题。例如,如果您将其用作只读设置数据库,它将运行得相当好。请认真考虑迁移到PostgreSQL(或者另一个支持的客户端-服务器数据库)。