Heroku 重复键值违反唯一约束(django)

问题描述 投票:0回答:2

今天我第一次在 Heroku 上部署了 django 应用程序(遵循 this 教程)。

问题是,当我想修改或添加某些内容到数据库时,我收到一个完整性错误,其中显示:

duplicate key value violates unique constraint "app_professore_pkey"

其中Professore是我尝试修改的模型的名称。

我在网上搜索了一下,发现这可能是因为我在 PC 上使用 SQLite 开发了该应用程序,而现在在 Heroku 上,它使用 PostgreSQL,这两个数据库的工作方式不同。 实际上,我对数据库没有太多经验(几乎没有经验),所以我不知道如何解决这个问题......也许修改Professore模型上的一些东西?或者在 Heroku 控制台中输入一些内容?

This is the error screen I get,如果你需要它来帮助我:)

提前致谢,如果我有不清楚的地方请告诉我(我也是 StackOverflow 的新手)

python django heroku
2个回答
0
投票

您需要在 Postgres 中重新同步主键字段。

您可以通过此命令访问您的数据库

python manage.py dbshell

只需检查表名

your_database_name=# \dt

执行以下命令

SELECT setval('table_name_id_seq', (SELECT MAX(id) FROM table_name)+1);

0
投票

4年后

面临同样的问题,当你启动gunicorn时,它有多个工作人员,他们都在争先恐后地执行db.create

可以暂时用WEB_CONCURRENCY=1来处理

heroku config:set WEB_CONCURRENCY=1

或者在你的heroku仪表板中设置它≥应用程序>设置>配置变量

另一种可能更容易控制的方法是使用从 Procfile 执行的脚本

migrate: python create_db.py
web: gunicorn app:app

© www.soinside.com 2019 - 2024. All rights reserved.