我在Heroku上部署了一个学习项目。它提供了一个Postgres数据库。我在Django项目的模型中引入了一些主要的变化,并销毁了旧的数据库并提供了一个新的数据库,它是完全空的,但它并不像空数据库那样工作。
当我运行命令heroku run python manage.py makemigrations
时,我得到错误消息
您正在尝试添加不可为空的字段....
为什么我在销毁旧数据库时收到此消息?
我在Heroku上部署了一个学习项目。它提供了一个Postgres数据库。我在Django项目的模型中引入了一些主要的变化,并销毁了旧的数据库并提供了一个新的数据库,它是完全空的,但它并不像空数据库那样工作。
当我运行命令heroku run python manage.py makemigrations
时,我得到错误消息
您正在尝试添加不可为空的字段....
为什么我在销毁旧数据库时收到此消息?
2条答案
按热度按时间zaq34kh61#
首先,永远不要在Heroku上运行
manage.py makemigrations
。当您的代码到达那里时,不应该存在任何模型更改来生成新的迁移。* 在本地 * 运行
makemigrations
以创建迁移文件。在本地和Heroku上运行migrate
以将迁移应用到数据库。现在已经解决了这个问题,这很可能是由现有的迁移 * 文件 * 引起的,而不是数据库中的任何东西。如果你真的想重新开始,你可以从你的每个应用程序的
migrations/
目录中删除文件。最后,不需要销毁和重新配置数据库来重置它。可以使用
heroku pg:reset
:分配给数据库的PostgreSQL用户没有创建或删除数据库的权限。要删除并重新创建数据库,请使用
pg:reset
。6jygbczu2#
首先,如果您还没有安装Heroku CLI,然后在终端中使用以下命令登录:
将打开一个浏览器窗口,您可以在其中验证您的Heroku帐户。登录后,导航到与您要重置的PostgreSQL数据库关联的Heroku应用程序:
将app-name替换为Heroku应用程序的名称在重置数据库之前,您需要禁用与数据库的所有活动连接
接下来,使用pg:reset命令重置数据库,它会将数据库重置为初始状态。
现在,您可以通过运行以下命令重新创建数据库:
然后禁用维护模式