Свойство местоположений пролета не задано

#flyway

#Пролетный путь

Вопрос:

Похоже, что Flyway не может разрешить путь к классу, несмотря на то, что там есть миграции. Что я здесь делаю не так?

 ➜  my-project git:(main) ✗ flyway migrate
Flyway Community Edition 7.0.4 by Redgate
ERROR: Unable to resolve location classpath:db/migration.
Database: jdbc:mysql://localhost:3306/adb (MySQL 8.0)
Successfully validated 0 migrations (execution time 00:00.051s)
WARNING: No migrations found. Are your locations set up correctly?
Current version of schema `adb`: << Empty Schema >>
Schema `adb` is up to date. No migration necessary.
  

flyway.conf

 flyway.url=jdbc:mysql://localhost:3306/adb
flyway.user=root
flyway.password=my-secret-pw
flyway.locations=db/migration/
  

Дерево

 ➜  my-project git:(main) ✗ tree .
.
├── README.md
├── db
│   └── migration
│       ├── V1.0__create_foo_table.sql
│       ├── V2.0__create_bar_table.sql
│       └── V3.0__alter_bar_table.sql
├── flyway.conf
  

Я также пробовал абсолютный путь, но безуспешно

Ответ №1:

Понял это — забыл файловую систему: добавить

 flyway.locations=filesystem:db/migration/
  

Ответ №2:

Я столкнулся с другой причиной, по которой сценарии миграции не были найдены с помощью Flyway 7.8.2.

Если процесс Flyway не имеет доступа для чтения к сценарию, вместо того, чтобы выводить ошибку, он просто игнорирует существующие файлы.

Обнаружил это при использовании образа Flyway Docker в AWS Codepipeline. Изображение запускает процесс от имени пользователя с именем «flyway». Codepipeline каким-то образом удаляет «лишние» разрешения из файлов при загрузке. Поэтому необходимо выполнить «chmod 0444» файлов перед использованием Flyway.

Также рекомендуется использовать параметр -X flyway, чтобы перечислить, что он делает.