Debian 기반 MySQL Docker 이미지의 파일 순서가 잘못되었습니다.

Debian 기반 MySQL Docker 이미지의 파일 순서가 잘못되었습니다.

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_1V1_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최신 파일을 식별하는 것이 최종 목표라면 다른 방법도 있습니다(그러나 사용 중인 셸과 정확히 수행하려는 작업에 따라 다릅니다).

관련 정보