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_11V1_4_1V1_4_2

-vDebian を使用しているので、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最新のファイルを識別することが最終目標である場合は、他の方法もあります(ただし、使用しているシェルと正確に実行したい操作によって異なります)。

おすすめ記事