2014-05-21 1 views
2

utf-8 및 InnoDB와 함께 mysql 데이터베이스를 사용하지만 liquibase가 테이블의 행 크기가 너무 크기 때문에 오류가 발생합니다. 행 크기를 초과하여 오류가 발생하는 릴리스 된 변경 집합이 있습니다.적용된 Liquibase 변경 집합을 대체 할 수 있습니다

<changeSet author="author" id="id"> 
    <addColumn tableName="TABLE"> 
     <column name="COLUMN" type="VARCHAR(5000)" /> <!-- Row size is too long --> 
    </addColumn> 
</changeSet> 

행 크기의 문제에 대한 해결책은 "TEXT"로 "(5000) VARCHAR"를 변경하는 것입니다,하지만 문제는 내가 여기 변경하지 수 있도록이 변경 집합은 일부 시스템에서 실행 된 것입니다 .

liquibase가 아직 실행되지 않은 경우 다른 것으로 변경 세트를 대체해야한다고 말하는 해결책이 있습니까?

답변

2

확인 결과 확인했습니다. validCheckSum을 사용하여 Liquibase에게이 변경 집합이 수정되었음을 알릴 수 있습니다.

변경 세트를 수정하고 이와 같이 태그를 추가했습니다.

<changeSet author="author" id="id"> 
    <validCheckSum>oldChecksum</validCheckSum> 
    <validCheckSum>newChecksum</validCheckSum> 
    <addColumn tableName="TABLE"> 
     <column name="COLUMN" type="TEXT" /> 
    </addColumn> 
</changeSet> 

그 liquibase 열을 수정하는 새로운 변경 집합을 만드는 것이 가능했을 정도로 실행으로 설정 변경을 허용 한 후.

<changeSet author="author" id="anotherId"> 
    <modifyDataType tableName="TABLE" columnName="COLUMN" newDataType="TEXT" /> 
</changeSet> 
+0

어떻게 새 체크섬을 평가합니까? 다른베이스에서 liquibase 스크립트를 실행하면됩니까? –

+0

이전 체크섬 및 새 체크섬을 어떻게 알 수 있습니까? 내가 liquibase를 실행하면 실패한 ID 만 출력합니다. –

관련 문제