문제

빠른 스타트를 따릅니다 Liquibase 나는 changes 셋을 만들었습니다 (매우 멍청한 :))

암호:

<?xml version="1.0" encoding="UTF-8"?>

<databaseChangeLog
  xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.6"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.6
         http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.6.xsd">

    <changeSet id="1" author="me">
        <createTable tableName="first_table">
            <column name="id" type="int">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="name" type="varchar(50)">
                <constraints nullable="false"/>
            </column>
        </createTable>
        <createTable tableName="new_table">
            <column name="id" type="int">
                <constraints primaryKey="true" nullable="false"/>
            </column>
        </createTable>
    </changeSet>

</databaseChangeLog>

깨끗한 스키마를 만들었고 Migrate 명령을 시작했습니다.

Liquibase는 지원 테이블 DatabaSechangelog 및 ..Lock을 사용하여 데이터베이스를 만들었습니다.

이제 어떻게 변경 사항을 추적 할 수 있습니까 ?? 새로운 CreateTable 요소를 추가하는 Changes 세트를 수정했지만 "업데이트"명령을 시도 할 때 Liquibase가 말해줍니다.

Migration Failed: Validation Failed:
     1 change sets check sum

그래서 나는 Liquibase와 함께 일하는 방법을 이해하지 못했다고 생각합니다.

누군가 나를 올바른 방향으로 가리킬 수 있습니까?

감사

도움이 되었습니까?

해결책

당신은 결코 수정해서는 안됩니다 <changeSet> 이미 실행되었습니다. Liquibase는 실행 된 모든 변경 사항에 대한 체크섬을 계산하고 로그에 저장합니다. 그런 다음 해당 체크섬과 비교하여 검사소와 비교하고 체크섬이 다른 경우 실행할 때 실패합니다.

대신해야 할 일은 추가하는 것입니다 또 다른 <changeSet> 그리고 당신의 새로운 createtable 요소를 넣으십시오.

QuickStart는 잘 읽었지만 실제로는 빠릅니다 :-) 전체를 확인하십시오. 수동, 특히 그것 변경 사항 부분.

다른 팁

이 현재 인정 된 답변은 Liquibase 2.X의 변화를 기반으로 약간 오래된 것입니다. 2.X 버전에서는 MD5 체크섬이 변경 사항에 대해 변경된 경우 Liquibase가 여전히 실패하지만 runonchange 속성 수정할 수 있으려면 속성.

로부터 선적 서류 비치:

runonchange - 처음 보았을 때 변경을 실행하고 변경 세트가 변경 될 때마다 실행됩니다.

기본적으로 이미 수행 된 변경 사항이 변경되면 해당 변경 사항에 대한 MD5가 새 제품과 일치하도록 데이터베이스를 수동으로 수정할 수 있습니다. 사소한 텍스트 변경에 좋습니다. 또는 테이블에서 변경 설정 행을 삭제할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top