2017-01-23 4 views
0

저는 liquibase를 사용하여 데이터베이스 마이그레이션을 정의한 스프링 부팅 응용 프로그램을 가지고 있습니다. 응용 프로그램 스크립트를 시작할 때 500 초를 대기하고 응용 프로그램의 http 상태를 확인하십시오. 오류 코드를 반환하면 스크립트가 응용 프로그램 프로세스를 종료하고 응용 프로그램을 다시 시작합니다. 가끔 시작하는 동안 응용 프로그램이 종료되고 liquibase가 databasechangeloglock에서 기록을 삭제하지 않습니다. 다음에 응용 프로그램이 실행될 때 릴리스 잠금을 기다리지 만 발생하지 않으며 응용 프로그램이 반복적으로 종료됩니다. 로그에서응용 프로그램이 손상되었을 때 스프링 liquibase가 복구됩니다.

각 응용 프로그램에서 마지막 줄은 다음과 같습니다

liquibase : Waiting for changelog lock.... 
liquibase : Waiting for changelog lock.... 

어떻게 스크립트 안에이 문제를 해결하기 위해 어떤 아이디어가 있습니까?

답변

1

Liquibase 변경은 변경되는 스키마에있을 것 2 개 테이블에 의해 제어됩니다

1) http://www.liquibase.org/documentation/databasechangeloglock_table.html

2) 변경 사항이 실행되지 않습니다 http://www.liquibase.org/documentation/databasechangelog_table.html

databasechangeloglock 테이블 때문에 LOCKED 열이 설정되어 있습니다. 서버/응용 프로그램을 다시 시작하기 전에이 설정을 수동으로 해제 할 수 있습니다. 당신이 변경 세트는 모두 변경 로그 테이블에서 relavent 행을 삭제할 수 있습니다 실행되지 않은 확신하는 경우이

을하기 전에

는 변경 집합이 RUN이있는 아주 조심.