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

4
我有一个部署在Heroku上的学习项目。它已经预置了一个Postgres数据库。我对Django项目的模型进行了一些重大更改,并销毁了旧的数据库并预置了一个新的数据库,该数据库完全为空,但它并没有像空数据库那样工作。当我运行命令heroku run python manage.py makemigrations时,我会收到以下错误消息:

您正在尝试添加非空字段....

为什么在我销毁了旧数据库后还会出现这个消息?
2个回答

10
首先,您不应该在Heroku上运行manage.py makemigrations
由于您的代码已经存在于那里,不应该生成新的迁移,因此请在本地运行makemigrations来创建迁移文件。在本地和Heroku上运行migrate来将迁移应用于数据库。
现在,可能是由于现有的迁移文件引起的,而不是由于数据库中的任何内容引起的。如果您真的想重新开始,可以从每个应用程序的migrations/目录中删除文件。
最后,没有必要销毁和重新设置数据库以进行重置。而是可以使用 heroku pg:reset

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


1
首先,如果您还没有安装Heroku CLI,请先安装它,然后在终端中使用以下命令登录:
heroku login

打开一个浏览器窗口,您可以在其中验证您的Heroku帐户。 登录后,导航到与您想要重置的PostgreSQL数据库相关联的Heroku应用程序:
heroku apps
heroku pg:info --app app-name

在重置数据库之前,您需要将任何活动连接禁用掉。请将app-name替换为您的Heroku应用程序的名称。
heroku maintenance:on --app your-app-name

接下来,使用pg:reset命令重置数据库,它将把数据库恢复到初始状态。
heroku pg:reset DATABASE_URL --app app-name

现在,您可以通过运行以下命令重新创建数据库:
heroku maintenance:off --app app-name

然后禁用维护模式
heroku maintenance:off --app app-name

你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接