今天我第一次在 Heroku 上部署了 django 应用程序(遵循 this 教程)。
问题是,当我想修改或添加某些内容到数据库时,我收到一个完整性错误,其中显示:
duplicate key value violates unique constraint "app_professore_pkey"
其中Professore是我尝试修改的模型的名称。
我在网上搜索了一下,发现这可能是因为我在 PC 上使用 SQLite 开发了该应用程序,而现在在 Heroku 上,它使用 PostgreSQL,这两个数据库的工作方式不同。 实际上,我对数据库没有太多经验(几乎没有经验),所以我不知道如何解决这个问题......也许修改Professore模型上的一些东西?或者在 Heroku 控制台中输入一些内容?
提前致谢,如果我有不清楚的地方请告诉我(我也是 StackOverflow 的新手)
您需要在 Postgres 中重新同步主键字段。
您可以通过此命令访问您的数据库
python manage.py dbshell
只需检查表名
your_database_name=# \dt
执行以下命令
SELECT setval('table_name_id_seq', (SELECT MAX(id) FROM table_name)+1);
4年后
面临同样的问题,当你启动gunicorn时,它有多个工作人员,他们都在争先恐后地执行db.create
可以暂时用WEB_CONCURRENCY=1来处理
heroku config:set WEB_CONCURRENCY=1
或者在你的heroku仪表板中设置它≥应用程序>设置>配置变量
另一种可能更容易控制的方法是使用从 Procfile 执行的脚本
migrate: python create_db.py
web: gunicorn app:app