从 Heroku 下载回我的 PC 时,数据库文件信息未保存
Database file information not saved when downloaded back from Heroku to my PC
我正在做一个 Discord.py 机器人,我的机器人需要一个数据库来存储公会、成员和其他东西。我用 git 上传了我的文件(也是一个创建的数据库文件)到 Heroku 和 运行 我的机器人。当人们加入 Discord 服务器或其他东西时,它必须将其记录到数据库中。
当我使用 heroku git:clone -a <name>
从 Heroku 下载我的所有文件到我的计算机时,我看到我的数据库仍然是空的,即使一个成员已经加入。当我 运行 我的机器人直接在我的电脑上时,数据库工作正常。为什么?当我的代码这样说时,Heroku 甚至会更新文件吗?也许我误解了什么?
Maybe I misunderstood something?
是的。您可以通过将代码推送到其 git 存储库来将代码部署到 heroku。那就是您的 blank/default 数据库文件所在的时间。当 heroku 启动一个 dyno 时,它实际上是将 git 存储库中的文件复制到新 dyno 上的文件系统中。当您的应用程序运行时,它可以读取和写入 dyno 上的文件。重点是:
- 对该动态本地文件的写入不会传播回 git。
- dyno 文件系统是短暂的。当您的 dyno 关闭时,文件消失了,所有更改也随之消失。
如果你想要一个可以在 dyno 重启后仍然存在的持久化数据库,你应该使用外部数据库而不是本地文件。例如,Postgres 附加组件。
我正在做一个 Discord.py 机器人,我的机器人需要一个数据库来存储公会、成员和其他东西。我用 git 上传了我的文件(也是一个创建的数据库文件)到 Heroku 和 运行 我的机器人。当人们加入 Discord 服务器或其他东西时,它必须将其记录到数据库中。
当我使用 heroku git:clone -a <name>
从 Heroku 下载我的所有文件到我的计算机时,我看到我的数据库仍然是空的,即使一个成员已经加入。当我 运行 我的机器人直接在我的电脑上时,数据库工作正常。为什么?当我的代码这样说时,Heroku 甚至会更新文件吗?也许我误解了什么?
Maybe I misunderstood something?
是的。您可以通过将代码推送到其 git 存储库来将代码部署到 heroku。那就是您的 blank/default 数据库文件所在的时间。当 heroku 启动一个 dyno 时,它实际上是将 git 存储库中的文件复制到新 dyno 上的文件系统中。当您的应用程序运行时,它可以读取和写入 dyno 上的文件。重点是:
- 对该动态本地文件的写入不会传播回 git。
- dyno 文件系统是短暂的。当您的 dyno 关闭时,文件消失了,所有更改也随之消失。
如果你想要一个可以在 dyno 重启后仍然存在的持久化数据库,你应该使用外部数据库而不是本地文件。例如,Postgres 附加组件。