Changeset seeming to run before the previous one completes

Hey folks,

I have the following changelog:

databaseChangeLog:
  - changeSet:
      id: initial
      author: Dan Rumney
      changes:
        - sqlFile:
            dbms: postgresql
            path: ./initial.sql
            splitStatements: false
  - changeSet:
      id: seed-config
      author: Dan Rumney
      changes:
        - sqlFile:
            dbms: postgresql
            path: ./seed-configuration.sql
            splitStatements: false

As you can probably infer, the first changeset creates a bunch of tables (the ones that predate my adoption of Liquibase), and the second one seeds my configuration table.

When I run this on a brand new Postgres instance, I get

Unexpected error running Liquibase: ERROR: relation "configuration" does not exist
  Position: 13 [Failed SQL: (0) INSERT INTO configuration ("id", "guardianConsentDocs", "providerConsentDocs", "defaultPool")
VALUES (1,
        '[]',
        '[]',
        NULL) ON CONFLICT (id) DO NOTHING]

Then, if I run it again, everything works perfectly. Also, by inspection of the DB, the configuration table is definitely getting generated in the first pass.

It’s almost like the second changeset is running before the first is completed.

Is this possible? Is there another explanation that fits? I’m somewhat at a loss here.

I can work around it, but I’d love to understand it.

Hi @dancrumb,

Let’s see if we can unpack this! Could you on a fresh db run:
liquibase updateSQL
instead of
liquibase update

and paste back the output? This will render a preview of the SQL that liquibase is about to execute in an update command.

Thanks,

Ronak