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

bxfogqkk  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(2)|浏览(131)

我在Heroku上部署了一个学习项目。它提供了一个Postgres数据库。我在Django项目的模型中引入了一些主要的变化,并销毁了旧的数据库并提供了一个新的数据库,它是完全空的,但它并不像空数据库那样工作。
当我运行命令heroku run python manage.py makemigrations时,我得到错误消息
您正在尝试添加不可为空的字段....
为什么我在销毁旧数据库时收到此消息?

zaq34kh6

zaq34kh61#

首先,永远不要在Heroku上运行manage.py makemigrations
当您的代码到达那里时,不应该存在任何模型更改来生成新的迁移。* 在本地 * 运行makemigrations以创建迁移文件。在本地和Heroku上运行migrate以将迁移应用到数据库。
现在已经解决了这个问题,这很可能是由现有的迁移 * 文件 * 引起的,而不是数据库中的任何东西。如果你真的想重新开始,你可以从你的每个应用程序的migrations/目录中删除文件。
最后,不需要销毁和重新配置数据库来重置它。可以使用heroku pg:reset
分配给数据库的PostgreSQL用户没有创建或删除数据库的权限。要删除并重新创建数据库,请使用pg:reset

6jygbczu

6jygbczu2#

首先,如果您还没有安装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

相关问题