Идентификатор таблицы больше не возвращается - сбой при обновлении в приложении Flask (psycopg2-sqlalchemy- postgresql) - PullRequest
0 голосов
/ 28 мая 2020

Я работаю над приложением Flask, используя PostgreSQL и SQLAlchemy с psycopg2. Я разрабатываю на Debian bullseye / sid, и у меня есть тестовый веб-сайт, работающий на Ubuntu 18.04.4 LTS. Недавно (и я сожалею, что не могу определить обновление) мне не удалось зафиксировать что-либо в базе данных в оболочке flask на моем локальном компьютере; каждая попытка терпит неудачу с NotNullViolation на идентификаторе таблицы первичного ключа. Раньше с этим всегда справлялись. Ниже приведен пример ошибки:

>>> db.session.commit()
Traceback (most recent call last):
  File "[...]DandyLion/.venv/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1283, in _execute_context [...]
sqlalchemy.exc.IntegrityError: (psycopg2.errors.NotNullViolation) null value in column "id" violates not-null constraint
DETAIL:  Failing row contains (null, 1, Resolve database id problem, null_id_problem, null, null, 2020-05-28 08:01:00.184953, null, 2020-05-30 17:00:00, [...]).
[SQL: INSERT INTO tasks (user_id, title, slug, [...]) RETURNING tasks.id]

База данных настроена следующим образом:

app.config.from_object(Config)
db = SQLAlchemy(app)

Я признаю незнание деталей реализации, но обратите внимание, что * 1016 Оператор * в трассировке указывает, что необходимо вернуть tasks.id. Так было всегда. на локальной машине. Для дальнейшего исследования, я был бы признателен за любое понимание наиболее вероятной точки отказа. Кто-нибудь может с этим помочь?

1 Ответ

0 голосов
/ 28 мая 2020

Как объясняется в этом сообщении SO , вы пытаетесь опубликовать значение NULL в качестве id.

Вы можете решить эту проблему, указав значение для id или измените тип столбца id на serial.

...