1
resposta

[Sugestão] Error creating bean with name 'flywayInitializer' defined in class path

Gente quem tiver tido esse erro:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Found non-empty schema(s) "SYSTEM" but no schema history table. Use baseline() or set baselineOnMigrate to true to initialize the schema history table.

Resolvi colocando isso: spring.flyway.baselineOnMigrate = true no application.properties

1 resposta

Olá, Rafael! Tudo bem?

Agradeço por compartilhar sua solução com a comunidade. :)

O erro que você mencionou é comum quando estamos usando o Flyway em um banco de dados que já possui algum tipo de estrutura ou dados. O Flyway espera que, por padrão, o banco de dados esteja vazio para que ele possa gerenciar a versão do esquema a partir do zero.

Ao adicionar a linha spring.flyway.baselineOnMigrate = true no seu arquivo application.properties, você está instruindo o Flyway a considerar o estado atual do seu banco de dados como a linha de base. Então, todas as migrações futuras serão aplicadas a partir deste ponto, e não a partir de um esquema vazio.

Por exemplo, digamos que você já tenha uma tabela 'usuarios' no seu banco de dados. Ao adicionar essa configuração, o Flyway entenderá que essa tabela 'usuarios' é a versão inicial (baseline) do seu esquema. Então, se você adicionar uma migração para criar uma nova tabela 'produtos', o Flyway irá aplicá-la normalmente, sem reclamar que a tabela 'usuarios' já existe.

Lembre-se de que essa configuração deve ser usada com cuidado. Se você estiver trabalhando em um projeto em equipe e seu colega de equipe criar uma migração que também cria a tabela 'usuarios', vocês terão um conflito.

Espero ter ajudado e bons estudos!