Debian
以 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
問題是
ls
它根據文件名的“詞典”排序順序對其輸出進行排序。按照這個順序,V1_4_11
在之後V1_4_1
和之前V1_4_2
等。由於您使用的是 Debian,因此有一個標誌
-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
以辨識最新文件;如果這是最終目標,還有其他方法可以做到這一點(但這取決於您使用的外殼以及您想要做什麼)。