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.
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.