不覆盖数据库而推到Heroku



我有一个更简单的问题,但是由于我是Heroku的新手和整个Git概念,所以我有些困惑。老实说,我搜索了这个问题,但没有找到足够的答案。也许您可以提供帮助。

我刚刚开始编码一个烧瓶应用程序,基于烧瓶示例,我在Heroku上推了它,因此我使用了Heroku Python指南,并使用终端中的以下几行推动更改(在Mac上):

$ git add -A
$ git commit -m "Pushing to Heroku"
$ git push -f heroku

每次我使用此行进行推动时,我的数据库在生产中又是空了。但是我不希望这一切都发生。我能做些什么?也许你们对此有所了解。

正在发生的,因为sqlite是 bad 选择Heroku。以下是从Heroku的文档中提取的:

sqlite在内存中运行,并在磁盘上的文件中备份其数据存储。尽管此策略在开发方面效果很好,但Heroku的Cedar Stack具有短暂的文件系统。您可以写信给它,您可以从中读取,但是内容将定期清除。如果您要在Heroku上使用SQLite,则每24小时至少会失去整个数据库。

即使Heroku的磁盘持续运行Sqlite仍然不合适。由于SQLite不作为服务运行,因此每个Dyno都会运行单独的运行副本。这些副本中的每一个都需要自己的磁盘支持商店。这意味着每个为应用程序供电的动力驱动都将具有不同的数据集,因为磁盘没有同步。

而不是在Heroku上使用SQLite,您可以配置您的应用程序以在Postgres上运行。

只需修改init_db函数以检查条目表是否已经存在:如果确实存在,则不要加载schema.sql

最新更新