Ваши две настройки противоречат друг другу.
Если вы включите режим автоматической фиксации в psql
, ваши сценарии должны выглядеть следующим образом:
-- statement 1
-- statement 2
...
COMMIT;
-- statement 3
...
COMMIT;
Это потому, что режим автоматической фиксации автоматически добавитBEGIN
перед первым оператором и перед каждым оператором после COMMIT
или ROLLBACK
.Это связано с тем, что PostgreSQL не имеет режима автоматической фиксации, поэтому psql
«притворяется».
Теперь, если ваш скрипт начинается с BEGIN
, это приведет к двум BEGIN
с сразу после каждогодругое, что приведет к наблюдаемому предупреждению.
Возможно, было бы лучше начать свои сценарии с
\set autocommit on
, чтобы убедиться, что все согласовано.