PostgreSQL doesn't support transactions that are nested inside of each other. There is only one transaction running per session. The server will warn if
END statements are repeated.
If you use the
--assume-in-transaction flag when running Squawk or set
assume-in-transaction = true in your config file, Squawk assumes that your migration tool will wrap each migration file in a transaction at runtime. Therefore, explicit calls to
COMMIT should be avoided, as these may disrupt what the tool is doing and cause unpredictable results.
Fix by removing the offending statements, verifying that the transaction start and end are being set correctly.
If you are using
assume-in-transaction, split each transaction into its own file.
Alternatively, if your migration tool supports explicitly managing transactions, you could use that along with
COMMIT statements in your migration file and not set
assume-in-transaction for Squawk.