Миграция приложения AnyDAC в FireDAC завершается ошибкой в ​​полях AutoInc

Я перенес приложение AnyDAC в FireDAC и не могу работать с его полями Autoinc.

Поле ID (первичный ключ) было определено в Postgre SQL по умолчанию как nextval('llistapanelspuzzle_id_seq'::regclass), BIGSERIAL, поэтому сервер автоматически устанавливает его значения.

Столбец был распознан AnyDAC как TAutoincField и работал правильно, но когда я теперь открываю эту таблицу в FireDAC, она не сообщает, что найденное поле является TLargeIntField. Я изменяю постоянное поле на TLargeIntField, но теперь при вставке записей в Delphi я не получаю новые значения с сервера, он оставляет набор данных со значением 0, а когда я добавляю вторую запись, он вызывает Key Violation ( две записи со значением 0 в первичном ключе).

Знаете ли вы, как определить поля AutoInc в FireDAC — PostgreSQL, когда они распознаются как поля LargeInt?

Обновление: я добавил идентификатор в UpdateOptions.AutoIncFields, но, похоже, ничего не изменилось.

Спасибо.


person Marc Guillot    schedule 10.03.2021    source источник


Ответы (1)


Похоже, вам нужно активировать флаг ExtendedMetada для FDConnection в чтобы FireDAC автоматически распознавал столбцы PostgreSQL Autoinc.

Теперь работает корректно.

person Marc Guillot    schedule 11.03.2021