2017-11-27 6 views
1

여기에 Liquibase를 사용하여 업데이트 된 데이터베이스가 있습니다. 내가 올바르게 이해하면, Liquibase는 changeset을 적용하고 실행 날짜와 MD5 체크섬이있는 DATABASECHANGELOG 테이블에 라인을 씁니다. 이렇게하면 Liquibase는 변경 집합 (예기치 않게)이 변경 될 때이를 알 수 있습니다.MD5SUM이없는 Liquibase 변경 내역

그러나이 데이터베이스에서 MD5SUM 항목의 대부분 (대부분)은 NULL입니다. 그 이유가 무엇인지 모릅니다. 어떤 방식 으로든 정상적인 작동 모드입니까?

Liquibase status 명령을 사용하는 경우 이 '적용되지 않음'으로 표시됩니다 (). Liquibase가 MD5 합계를 사용하지 않고이를 어떻게 결정할 수 있습니까? 또는 MD5 합계가없는 변경 집합이 변경된 것으로 간주됩니다. 문제의 DATABASECHANGELOG은 2 개의 다른 프로그램에 의해 사용되었습니다.

+0

나는이 질문에 답할 수 없다. 왜냐하면 나는 체크섬이 어떻게 처리되는지를 알고있는 유효한 값인 체크섬에 대한 '널 (NULL)'값에 대해 전체 liquibase 코드를 감독하지 않기 때문이다. 하지만 그것은 나에게 이상한 것 같습니다. Checksum을 생성하기위한 꽤 중심적인 클래스가 있습니다 : [CheckSum.java] (https://github.com/liquibase/liquibase/blob/master/liquibase-core/src/main/java/liquibase/change /CheckSum.java). 어쩌면 당신은 그것을보고 도움이되는지보기를 원할 것입니다 ... – Jens

답변

0

이것은 의문의 여지가 있지만 꽤 잘 작동하는 데 사용됩니다.

까지 ... 프로그램은 MD5SUM의 다른 형식으로 다른 버전의 Liquibase를 사용하기 시작했습니다. 이를 감지하면 Liquibase는 전체 열 (자체적으로는 의문 스럽습니다)에 NULL을 써서 다른 모든 프로그램의 모든 체크섬을 제거합니다. Liquibase가 실행되는 순서에 따라 다른 체크섬 세트는 결국 NULL으로 남았습니다.