Open kkame opened 6 years ago
CI 내장 마이그레이션 써도 상관은 없는데 서로의 개발환경에서 어떻게 데이터베이스 동기화를 맞출건지 정하는게 좋을 거 같습니다.
동감합니다. 서로의 개발환경에서 작업중 마이그레이션 버전이 충돌나면 수작업으로 맞춰주느라 시간이 소요되다보니 동기화 방법을 찾아봐야 할 것 같습니다.
디비 마이그레이션 중에 예상치 못한 오류가 발생할 경우 툴만으론 롤백이 제대로 동작하지 않는데, 이런 경우를 어떻게 해결할지도 의논하는 게 좋을 거 같습니다.
마이그레이션 충돌
롤백문제
충돌: 마이그레이션 파일명 충돌 같은 경우엔 doctine/migrations 라이브러리 같은 경우 현재 시간을 기준으로 파일명을 생성하기 때문에, 중복될 학률이 지극히 낮습니다. 더 나은 라이브러리를 쓰는 것도 방안이지 않을까요?
롤백:
마이그레이션을 한 파일에서 여러 쿼리를 등록한 경우, 쿼리 중간에 오류가 나면 수동으로 해당 파일을 실행시켜서 롤백을 해줘야 하는데, 현재 롤백 커맨드도 쿼리가 무조건 성공한다는 가정으로 쓰여져 있어서, 중간에 실패한 작업 롤백 쿼리에서 걸립니다. 쿼리에 exist 유무를 넣어주는 식으로 직접 디비 수정할 일을 최소한으로 만들어야하지 않을까요?
마이그레이션 툴(doctrine)에서 자체적으로 트랜잭션을 지원하지 않는데, 그렇다고 현재 마이그레이션 파일에 트랜잭션 쿼리를 넣어주지도 않고 있습니다. 트랜잭션 처리를 넣는 쪽으로 맞추면 어떨까요?
충돌:
롤백:
두개의 상황을 모두 고려했을 때
git pull이든 fetch든 소스를 갱신한 이후에는 무조건 주요한 부분에 대해서는 재검증 + 로컬에서 테스트 이후 commit 하는 수 밖에 없는 것 같음
어떤 툴을 사용할 것인가?