如何在 Heroku 上完全重置 Postgres 数据库?

Posted

技术标签:

【中文标题】如何在 Heroku 上完全重置 Postgres 数据库?【英文标题】:How to completely reset Postgres database on Heroku? 【发布时间】:2019-11-19 08:47:07 【问题描述】:

我在 Heroku 上部署了一个学习项目。它提供了一个 Postgres 数据库。我对我的 Django 项目的模型进行了一些重大更改,并销毁了旧数据库并提供了一个新数据库,该数据库完全是空的,但它不像空数据库那样工作。

当我运行命令 heroku run python manage.py makemigrations 时,我收到错误消息

您正在尝试添加一个不可为空的字段......

为什么我在销毁旧数据库后会收到此消息?

【问题讨论】:

【参考方案1】:

首先,你不应该在 Heroku 上运行 manage.py makemigrations

当您的代码到达那里时,不应该存在任何模型更改来生成新的迁移。运行makemigrations 本地 以创建迁移文件。在本地和 Heroku 上运行 migrate 以将迁移应用到您的数据库。

现在已经不碍事了,这可能是由现有迁移文件引起的,而不是数据库中的任何内容。如果您真的想重新开始,您可以从您的每个应用程序的 migrations/ 目录中删除文件。

最后,无需销毁和重新配置您的数据库来重置它。相反,你可以use heroku pg:reset:

分配给您的数据库的 PostgreSQL 用户没有创建或删除数据库的权限。要删除并重新创建数据库,请使用 pg:reset

【讨论】:

以上是关于如何在 Heroku 上完全重置 Postgres 数据库?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Postgres Heroku 上的先前备份中恢复特定数据? (例如,意外删除的行)

如何在 Heroku 中将 Kafka 连接到 Postgres

如何在heroku上执行.sql脚本?

无法在 Heroku 上运行迁移 Postgres

如何使用 Python 迁移将 Heroku Django 应用程序的新模型表添加到远程 Heroku Postgres?

如何让我在 Heroku 上的 Laravel 项目使用 Heroku Postgres?