【问题标题】:Better-SQLite3 Database resetting after restart on Heroku在 Heroku 上重新启动后,Better-SQLite3 数据库重置
【发布时间】:2019-08-05 22:14:10
【问题描述】:

我有一个带有 better-sqlite3 硬币和 XP 数据库的 Discord 机器人。直到 2 周前它一直运行良好。现在,每次重新启动后,它只会设置 XP 和硬币。这真的很烦人,因为人们每天都在升级同一级别。

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: javascript sqlite heroku discord.js


    【解决方案1】:

    如果这能正常工作,我会非常感到惊讶。

    每当您的 dynos 重新启动时,Heroku 的 ephemeral filesystem 都会丢失对其所做的所有更改。这个happens frequently(每天至少一次)。因此,像 SQLite aren't supported on Heroku 这样的基于文件的数据库。

    如果你想在 Heroku 上运行你的代码,你必须切换到客户端-服务器数据库。 PostgreSQL 是一种常见的选择,Heroku 提供了自己的hosted PostgreSQL service,您可以免费开始使用。

    【讨论】:

    • 除了临时存储之外,您不能在 Heroku 上使用任何基于文件的数据存储。
    • 我认为这并不难,而且那里有 大量 教程。数百个。但这无关紧要。 Heroku 不提供持久文件系统。你不能在它上面使用 SQLite,句号,不管你多么想(除非你在只读上下文中使用它)。
    • 如果您想要一些简单的带有 Postgres 的数据库,请使用 enmap@3(版本 4 不再支持 postgress)并使用 enmap-postgress provoider。这将允许您使用 Discord.js Collections 之类的结构来存储数据。 ( enmap.set() / enmap.get() )
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 2020-03-13
    • 2012-11-13
    • 2011-01-08
    • 2012-07-03
    • 1970-01-01
    相关资源
    最近更新 更多