Symfony 및 Laravel과 같은 최신 PHP 프레임워크에서는 일반적으로 마이그레이션에 up
및 down
메소드가 있습니다. 마이그레이션 정의의 up
메서드에서는 마이그레이션을 앞으로 실행하고 down
할 때만 호출되는 코드, 즉 마이그레이션을 롤백할 때만 호출되는 코드를 작성해야 했습니다. 데이터베이스 마이그레이션을 되돌릴 수 없게 만드는 것이 표준 관행입니다. 마이그레이션은 이전 버전과 호환되어야 하며 앞으로만 진행되어야 합니다.
Laravel에서 누락되거나 비어 있는 down
메소드는 php artisan migrate:rollback
CLI 명령 실행 시 롤백 마이그레이션을 방지하지 않습니다. 데이터베이스 상태는 변경되지 않지만 적용된 마이그레이션 레지스트리에서 마이그레이션이 제거되고 다음에 php artisan migrate
실행하면 up
메소드가 다시 호출됩니다. 이 동작을 방지하려면 모든 마이그레이션에 예외를 발생시키는 down
메소드가 있어야 합니다.
php db migration validator 모든 마이그레이션 파일이 이 요구 사항을 충족하는지 확인합니다. 마이그레이션 롤백을 방지하기 위해 서버의 git 후크에 추가하거나 CI에 유효성 검사 단계를 추가할 수 있습니다.
Composer를 통해 패키지를 가져옵니다.
php composer require antonkomarev/php-db-migration-validator
파일 유효성 검사
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/file.php
많은 파일의 유효성을 검사합니다.
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/file.php migrations/file2.php
와일드카드로 많은 파일의 유효성을 검사합니다.
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/2022_ *
디렉터리의 파일 유효성을 검사합니다.
php vendor/bin/php-db-migration-validator --rule=irreversible migrations/
여러 디렉터리에 있는 파일의 유효성을 검사합니다.
php vendor/bin/php-db-migration-validator --rule=irreversible app/migrations/ vendor/migrations/
지속적인 통합의 일부로 저장소에 대한 모든 기여의 유효성 검사를 자동화하는 것은 이 도구를 사용하는 가능한 방법 중 하나입니다.
애플리케이션 저장소에 .github/workflows/db-migration-validation.yaml
파일을 생성합니다.
name : DB Migration Validation
on :
push :
jobs :
db-migration-validation :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v2
- uses : shivammathur/setup-php@v2
with :
php-version : 8.1
extensions : tokenizer
coverage : none
- name : Install php db migration validator dependency
run : composer global require antonkomarev/php-db-migration-validator --no-interaction
- name : Ensure all database migrations are irreversible
run : php-db-migration-validator --rule=irreversible ./database/migrations
$ php vendor/bin/php-db-migration-validator --help
php db migration validator
--------------------------
by Anton Komarev <[email protected]>
Usage: php-db-migration-validator --rule=<rule> <path>
The following commands are available:
help Shows this usage instructions.
Options:
--rules=<rule> Validates the database migration(s) in the specified <path>.
Exits with code 1 on validation errors, 2 on other errors and 0 on success.
Available rules (at least one should be specified):
- irreversible — ensure if migration file has `down` method and this method throws an Exception.
php db migration validator
패키지는 Anton Komarev가 MIT 라이선스에 따라 라이선스를 부여한 오픈 소스 소프트웨어입니다. php db migration validator 개발을 지원하고 싶다면 저를 후원해 주세요. 정말 고마워요!
CyberCog는 매니아들의 사회적 연합입니다. 제품 및 소프트웨어 개발 분야에서 최고의 솔루션을 연구하는 것이 우리의 열정입니다.