Flyway CLI의 도움으로 마이그레이션하려고 하기 때문에 내 문제는 비교적 간단합니다.
여기서 문제는 시스템이 마이그레이션 파일을 잘못된 순서로 정렬하고 새 파일이 최신 버전으로 간주되지 않는다는 것입니다. 이러한 파일은 POM과 동일한 버전을 가지므로 어떤 버전이 변경되었는지 알 수 있습니다.
현재 버전은 1.4.11이지만 이전 버전으로 간주됩니다.
V1_4_11.001
비교되어야 한다V1_4_7.001
왜 그런 겁니까? outOfOrder 플래그를 사용하지 않고 어떻게 문제를 해결할 수 있나요? 내 MacBook에는 똑같은 파일이 올바른 순서로 있습니다.
-rw-r--r-- 1 501 staff 226 Oct 18 16:02 V1_1_0__patch.sql
-rw-r--r-- 1 501 staff 3174 Oct 18 16:02 V1_2_0__patch.sql
-rw-r--r-- 1 501 staff 1774 Oct 18 16:02 V1_2_2__patch.sql
-rw-r--r-- 1 501 staff 130 Oct 18 16:02 V1_4_0.001__merge_skill_level_godlike.sql
-rw-r--r-- 1 501 staff 111 Oct 18 16:02 V1_4_0.002__modify_publications.sql
-rw-r--r-- 1 501 staff 2149 Oct 18 16:02 V1_4_0.003__create_v_competence_by_experience.sql
-rw-r--r-- 1 501 staff 55 Oct 18 16:02 V1_4_11.001__add_profile_updated_on.sql // Newest version
-rw-r--r-- 1 501 staff 712 Oct 18 16:02 V1_4_7.001__add_duration.sql
답변1
문제는 ls
출력을 다음과 같이 정렬하는 것 입니다."사전" 정렬파일 이름. 이 순서에서는 첫 번째가 맨 마지막에 V1_4_11
옵니다 .V1_4_1
V1_4_2
-v
데비안을 사용하고 있으므로 ls
원하는 작업을 수행하는 플래그가 있습니다:
-v
텍스트에서 (버전) 번호의 자연스러운 순서
예를 들어, 귀하의 예를 기반으로 빈 텍스트 파일을 생성하는 경우 "일반" 출력 순서는 다음과 같습니다.
myuser@myhost:~$ ls -l
-rw-r--r-- 1 myuser mygroup 0 Okt 19 00:47 V1_1_0__patch.sql
-rw-r--r-- 1 myuser mygroup 0 Okt 19 00:47 V1_2_0__patch.sql
-rw-r--r-- 1 myuser mygroup 0 Okt 19 00:47 V1_2_2__patch.sql
-rw-r--r-- 1 myuser mygroup 0 Okt 19 00:47 V1_4_0.001__merge_skill_level_godlike.sql
-rw-r--r-- 1 myuser mygroup 0 Okt 19 00:47 V1_4_0.002__modify_publications.sql
-rw-r--r-- 1 myuser mygroup 0 Okt 19 00:47 V1_4_0.003__create_v_competence_by_experience.sql
-rw-r--r-- 1 myuser mygroup 0 Okt 19 00:47 V1_4_11.001__add_profile_updated_on.sql
-rw-r--r-- 1 myuser mygroup 0 Okt 19 00:47 V1_4_7.001__add_duration.sql
해당 플래그를 사용하면 -v
다음과 같은 결과를 얻습니다.
myuser@myhost:~$ ls -lv
-rw-r--r-- 1 myuser mygroup 0 Okt 19 00:47 V1_1_0__patch.sql
-rw-r--r-- 1 myuser mygroup 0 Okt 19 00:47 V1_2_0__patch.sql
-rw-r--r-- 1 myuser mygroup 0 Okt 19 00:47 V1_2_2__patch.sql
-rw-r--r-- 1 myuser mygroup 0 Okt 19 00:47 V1_4_0.001__merge_skill_level_godlike.sql
-rw-r--r-- 1 myuser mygroup 0 Okt 19 00:47 V1_4_0.002__modify_publications.sql
-rw-r--r-- 1 myuser mygroup 0 Okt 19 00:47 V1_4_0.003__create_v_competence_by_experience.sql
-rw-r--r-- 1 myuser mygroup 0 Okt 19 00:47 V1_4_7.001__add_duration.sql
-rw-r--r-- 1 myuser mygroup 0 Okt 19 00:47 V1_4_11.001__add_profile_updated_on.sql
하지만, 이것은 실제로는 단지 ls
명령 출력 파일일 뿐이며 파일 시스템에서 파일이 내부적으로 구성되는 방식과는 아무 관련이 없습니다. 또한, 시도해서는 안 된다.출력 구문 분석ls
최신 파일을 식별하는 것이 최종 목표라면 다른 방법도 있습니다(그러나 사용 중인 셸과 정확히 수행하려는 작업에 따라 다릅니다).