Error running changesets after 4.7 update

Hi Team,

There seems to be an issue in 4.7.1 occuring when “KEY”, “VALUE” column names are spelled lowercase in the changeset xml.

Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column “value” not found; SQL statement:
UPDATE TABLENAME SET “value” = ‘xxx’ WHERE key = ‘yyy’ and value = ‘zzz’

Changeset:

<update tableName="TABLENAME">
            <column name="value" value="xxx"/>
            <where> key = 'yyy' and value = 'zzz'</where>
</update>

Changing the changeset to uppercase <column name="VALUE" value="xxx"/> resolves the issue.

The problem does not occur in 4.6.x.

Best regards,
Marcin

1 Like

Hi @marcin Thanks for joining the community and alerting us to the issue. In the meantime as a possible workaround, you might be able to use object quoting strategy
objectQuotingStrategy Attribute | Liquibase Docs and quote all names.

Hi @MikeOlivas, thank you for your response! Unfortunately, the objectQuotingStrategy doesn’t fix the issue - I believe this might be because our column names (“key”, “value”) are reserved words and are auto-quoted in each object quoting strategy.

Changing the column name to uppercase does help, but is not ideal because it invalidates the checksum.

Hi @marcin, Yes that would make sense using reserved words. As another workaround you could create a valid checksum and then add that to the changeset.

For newer tables, I would stay away from reserved words in the database.

This issue is really in H2 (versions 2.0.4 and above), which is included in Liquibase and was bumped in 4.7. More background.