InfoGrab DocsInfoGrab Docs

기존 마이그레이션 삭제

요약

GitLab 프로젝트에서 기존 마이그레이션을 제거할 때는, 해당 마이그레이션이 이미 과거 릴리즈나 현재 릴리즈에 포함되어 GitLab.com 및/또는 GitLab Self-Managed 인스턴스에서 이미 실행되었을 가능성을 고려해야 합니다.

GitLab 프로젝트에서 기존 마이그레이션을 제거할 때는, 해당 마이그레이션이 이미 과거 릴리즈나 현재 릴리즈에 포함되어 GitLab.com 및/또는 GitLab Self-Managed 인스턴스에서 이미 실행되었을 가능성을 고려해야 합니다.

이러한 이유로, 기존 마이그레이션을 삭제하는 것은 불가능합니다. 삭제할 경우 다음과 같은 문제가 발생할 수 있습니다:

  • 데이터베이스에 적용된 변경 사항이 올바르게 롤백되지 않아 스키마 불일치가 발생할 수 있습니다.

  • 코드베이스에 더 이상 존재하지 않는 마이그레이션을 가리키는 레코드가 schema_versions 테이블에 남게 됩니다.

삭제 대신 마이그레이션을 비활성화하는 방법을 선택할 수 있습니다.

마이그레이션 비활성화를 위한 사전 요건#

다음 조건에 해당하는 경우 마이그레이션을 비활성화할 수 있습니다:

  • GitLab.com에서 타임아웃이 발생하거나 일반적인 문제가 발생한 경우.

  • 기능 변경으로 인해 변경 사항이 더 이상 필요하지 않아 마이그레이션이 더 이상 필요하지 않은 경우.

  • 마이그레이션이 데이터 마이그레이션에만 해당하는 경우. 즉, 마이그레이션이 데이터베이스 스키마를 변경하지 않는 경우.

데이터 마이그레이션을 비활성화하는 방법#

마이그레이션을 비활성화하려면 모든 유형의 마이그레이션에 다음 단계를 적용합니다:

  • #up, #down 또는 #perform 메서드 내부의 코드를 제거하고 # no-op 주석을 추가하여 마이그레이션을 no-op으로 전환합니다.

  • 코드를 제거한 이유를 설명하는 주석을 추가합니다.

마이그레이션 비활성화는 Database Maintainer의 명시적인 승인이 필요합니다.

예시#

기존 마이그레이션 삭제

GitLab v19.1
원문 보기
요약

GitLab 프로젝트에서 기존 마이그레이션을 제거할 때는, 해당 마이그레이션이 이미 과거 릴리즈나 현재 릴리즈에 포함되어 GitLab.com 및/또는 GitLab Self-Managed 인스턴스에서 이미 실행되었을 가능성을 고려해야 합니다.

GitLab 프로젝트에서 기존 마이그레이션을 제거할 때는, 해당 마이그레이션이 이미 과거 릴리즈나 현재 릴리즈에 포함되어 GitLab.com 및/또는 GitLab Self-Managed 인스턴스에서 이미 실행되었을 가능성을 고려해야 합니다.

이러한 이유로, 기존 마이그레이션을 삭제하는 것은 불가능합니다. 삭제할 경우 다음과 같은 문제가 발생할 수 있습니다:

  • 데이터베이스에 적용된 변경 사항이 올바르게 롤백되지 않아 스키마 불일치가 발생할 수 있습니다.

  • 코드베이스에 더 이상 존재하지 않는 마이그레이션을 가리키는 레코드가 schema_versions 테이블에 남게 됩니다.

삭제 대신 마이그레이션을 비활성화하는 방법을 선택할 수 있습니다.

마이그레이션 비활성화를 위한 사전 요건#

다음 조건에 해당하는 경우 마이그레이션을 비활성화할 수 있습니다:

  • GitLab.com에서 타임아웃이 발생하거나 일반적인 문제가 발생한 경우.

  • 기능 변경으로 인해 변경 사항이 더 이상 필요하지 않아 마이그레이션이 더 이상 필요하지 않은 경우.

  • 마이그레이션이 데이터 마이그레이션에만 해당하는 경우. 즉, 마이그레이션이 데이터베이스 스키마를 변경하지 않는 경우.

데이터 마이그레이션을 비활성화하는 방법#

마이그레이션을 비활성화하려면 모든 유형의 마이그레이션에 다음 단계를 적용합니다:

  • #up, #down 또는 #perform 메서드 내부의 코드를 제거하고 # no-op 주석을 추가하여 마이그레이션을 no-op으로 전환합니다.

  • 코드를 제거한 이유를 설명하는 주석을 추가합니다.

마이그레이션 비활성화는 Database Maintainer의 명시적인 승인이 필요합니다.

예시#