Laravel의 'Migrate : Refresh'및`Migrate : Reset '은 모두 데이터베이스 마이그레이션 관리와 관련이 있지만 데이터베이스 스키마 관리 중에 다른 목적을 달성하고 뚜렷한 방식으로 작동합니다. Laravel 개발자가 개발 또는 배포 중에 데이터베이스 상태를 효과적으로 처리하는 데있어 차이를 이해하는 것이 중요합니다.
마이그레이션 : 새로 고침
`PHP Artisan Migrate : Crofresh '명령은 모든 마이그레이션을 롤백 한 다음 다시 실행하는 데 사용됩니다. 즉, 적용된 모든 마이그레이션 (각 마이그레이션의`down ()`메소드 실행)을 실행 한 다음 각 마이그레이션에 대해`up ()`메소드를 다시 실행하여 데이터베이스 스키마를 처음부터 다시 작성합니다.
-하는 일 :
- 모든 마이그레이션을 롤백합니다 (모든 스키마 변경을 취소).
- 데이터베이스 스키마를 재 구축하기 위해 모든 마이그레이션을 다시 실행합니다.
- 일반적인 사용 사례 :
- 마이그레이션을 통해 데이터베이스 구조를 일관되게 유지하면서 데이터베이스 스키마를 재설정하려는 경우 유용합니다.
- 마이그레이션 테스트를 통해 여러 번 깨끗하게 적용 할 수 있습니다.
-종종`-seed` 옵션 ( 'PHP Artisan Migrate : Refresh-Seed`)과 결합하여 데이터베이스를 재건 한 후 종자 데이터로 데이터베이스를 다시 채 웁니다.
- 장점 :
-`down ()`및`up ()`메소드를 올바르게 적용하여 데이터베이스 구조를 일관되게 유지합니다.
-`-step` 옵션을 사용하여 제한된 수의 마이그레이션을 선택적으로 새로 고칠 수 있습니다 (예 : 'PHP Artisan Migrate : Refresh--Step = 5`는 마지막 5 개의 마이그레이션을 롤백하고 재회합니다).
- 성능:
-`마이그레이션 : Fresh`보다 속도가 느릴 수 있습니다. 많은 수의 마이그레이션을 처리 할 때 각 마이그레이션에 대한`down ()`메소드를 다시 적용하기 전에 실행하기 때문입니다.
- 데이터 :
- 모든 마이그레이션을 롤백하므로 다시 시드되지 않으면 테이블의 데이터가 손실됩니다.
- 마이그레이션 내부에서 정의 된 롤백 논리를 보존하므로 다운 마이그레이션이 신중하게 작성되면 불일치를 방지 할 수 있습니다.
마이그레이션 : 재설정
'PHP Artisan Migrate : Reset'명령은 적용된 모든 마이그레이션을 롤백하여 데이터베이스를 원래 마이그레이션 상태로 되돌립니다.
-하는 일 :
- 모든 마이그레이션의`down ()`메소드를 실행하여 모든 마이그레이션을 롤백합니다.
-`refresh '와 달리 마이그레이션을 다시 실행하지 않습니다.
- 일반적인 사용 사례 :
- 모든 마이그레이션을 다시 적용하지 않고 완전히 취소하려는 경우 유용합니다.
- 다음에 무엇을 해야하는지 결정하기 전에 스키마를 완전히 지워야하는 시나리오를 도와줍니다.
- 장점 :
- 모든 마이그레이션 기반 데이터베이스 스키마 변경을 지우십시오.
- 데이터 :
-`refresh '와 마찬가지로, 마이그레이션을 롤백하면 테이블 데이터가 손실됩니다.
- 모든 마이그레이션이 재설정되면 스키마가 존재하지 않습니다.
- 행동:
- 데이터베이스를 마이그레이션되지 않은 상태로 둡니다.
- 스키마를 재건하려는 경우 'PHP Artisan Migrate'를 수동으로 실행해야합니다.
추가 컨텍스트 : 마이그레이션 : 새로운 비교
직접 묻지는 않지만`Migrate : Fresh` 명령은 종종`refresh` 및`재설정 '과 혼동되며 차이점을 더 명확하게하는 데 도움이됩니다.
-`PHP Artisan Migrate : Fresh`는`down ()`메소드를 실행하지 않고 데이터베이스의 모든 테이블을 직접 떨어 뜨린 다음 모든 마이그레이션을 실행합니다.
- 마이그레이션으로 마이그레이션을 롤백하는 대신 모든 테이블을 떨어 뜨립니다.
- 롤백 로직없이 데이터베이스를 정리하는 것이 허용되는 개발 환경에 이상적입니다.
-`refresh '와 마찬가지로, 데이터를 다시 채우기 위해`-seed`와 결합 할 수 있습니다 (예 :`마이그레이트 : 신선한-시드`).
차이에 대한 더 깊은 설명
- 롤백이 발생하는 방법 :
-`refresh`와`restet`은 스키마 변경을 실행 취소하기 위해 각 마이그레이션의`down ()`메소드에 의존합니다.
-`재설정 '은 모든 것을 롤백하고 중지합니다.
-`새로 고침 '은 모든 것을 롤백 한 다음 모든 것을 다시 마이그레이션합니다.
- 명령 후 데이터베이스 상태 :
-`Reset '후에는 데이터베이스 스키마가 비어 있습니다 (마이그레이션의 테이블 없음).
-`refresh '후에, 데이터베이스 스키마는 마치 새로 마이그레이션되는 것처럼 재건됩니다.
- 데이터 손실 :
- 모든 마이그레이션이 완전히 롤백되면서 두 명령 모두 데이터 손실을 유발합니다.
-`-seed` 플래그를 사용하는 경우`refresh '는 종자 데이터를 자동으로 다시 도입 할 수 있습니다.
- 개발 라이프 사이클에서의 사용 :
- 마이그레이션을 개발하거나 테스트 할 때 '새로 고침'을 사용하고 데이터를 다시 조정하면서 스키마를 재건하려고합니다.
- '재설정'을 사용하여 새 마이그레이션을 수동으로 적용하거나 새로운 마이그레이션을 실행하기 전에 마이그레이션 스키마를 완전히 지우십시오.
Laravel 개발자를위한 실제 메모
- 두 명령 모두 마이그레이션이`up ()`및`down ()`메소드로 올바르게 스크립팅되는 마이그레이션에 따라 달라집니다.`down ()`메소드가 누락되거나 불완전한 경우 롤백 명령 (`refresh` 및`reset`)이 실패하거나 데이터베이스를 불일치 한 상태로 남길 수 있습니다.
-``refresh '는 마이그레이션 실행 취소 중에 롤백 로직 및 잠재적 데이터 관계를 존중하려는 환경에서'신선한 '보다 안전한 것으로 간주 될 수 있습니다.
- 모든 데이터가 손실되므로 백업이없는 프로덕션 데이터베이스에서 명령을 부주의하게 사용해서는 안됩니다.
- 주로 스키마 반복이 빈번하고 결과없이 데이터를 재설정 할 수있는 로컬 개발 또는 테스트 환경에서 사용하도록 설계되었습니다.
요약
주요 차이점은 다음과 같습니다.
- 마이그레이션 : 새로 고침 - 모든 마이그레이션을 롤백 한 다음 모든 마이그레이션을 다시 실행하십시오.
- 마이그레이션 : 재설정 - 모든 마이그레이션을 롤백하되 다시 롤백하지 마십시오.
`Migrate : Refresh`는 롤백 및 마이그레이션을 통해 스키마를 처음부터 효과적으로 재구성하여 다시 시어링 및 단계별로 새로 고침을 허용하는 반면`Migrate : Reset`은 데이터베이스를 불명예 상태로 반환합니다.
두 명령 모두 Laravel 개발자가 데이터베이스 버전을 관리 할 수있는 기본 도구이지만 다른 워크 플로우를 제공하며 데이터베이스 상태에 고유 한 영향을 미칩니다.
이러한 이해는 응용 프로그램 개발, 테스트 및 배포의 다양한 단계에 대한 올바른 명령을 선택하는 데 도움이됩니다.
모든 사용법은 데이터 손실, 애플리케이션 스키마 일관성 및 Laravel 프로젝트 내에서 데이터베이스 마이그레이션을 관리하려는 개발 의도에 대한 영향을 고려해야합니다.