Два условия, где тег Liquibase - PullRequest
0 голосов
/ 09 апреля 2020

Я хочу добавить два условия, в которых выбрасывается тег ликвидазы и исключения:

Reason: liquibase.exception.DatabaseException: Unknown column 'uid' in 'where clause' [Failed SQL: UPDATE kw.media_file SET created = '1586352959' WHERE id=1 AND uid='admin']
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1583)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)

Вот список изменений:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog 
      http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd"
      logicalFilePath="src/main/resources/db/update.xml">

<changeSet author="author" id="20200409-update">
    <update tableName="media_file">
        <column name="last_modified" type="int(11)" value="1586438425"/>
        <where>id=1 AND uid='admin'</where>
    </update>
</changeSet>

Эквивалент sql оператор находится здесь:

update person set created = 1586352959 where id = 2 and uid='admin';

Когда я запускаю оператор SQL, столбец обновляется, но с жидкой базой не повезло. Спасибо.

1 Ответ

1 голос
/ 09 апреля 2020

Как указано в комментарии, указанная вами ошибка и набор изменений не совпадают.

Ошибка состоит в том, что столбец uid не найден в таблице media_file

Ваш changeSet является синтетически правильным, и вы можете указать несколько условий в одном теге <where>.

На основе предоставленного вами оператора SQL

обновление набора персон созданных = 1586352959, где id = 2 и uid = 'admin';

Так что я могу предположить, что набор изменений, который вы ищете, может выглядеть примерно так:

<changeSet author="foo" id="bar">
    <update tableName="person">
        <column name="created" type="int(11)" value="1586438425"/>
        <where>id = 2 AND uid = 'admin'</where>
    </update>
</changeSet>
...