es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo introducir Liquibase en un proyecto basado en Spring Boot y Maven

Ya tengo un proyecto en ejecución e intento introducir Liquibase en medio del proyecto. Este es un proyecto basado en Spring Boot y Maven.

Sigo los siguientes pasos.

  1. archivo liquibase.properties
url=jdbc:postgresql://localhost:5432/cc
username=postgres
password=deadline123
driver=org.postgresql.Driver
outputChangeLogFile=src/main/resources/db/changelog/db.changelog-master.yaml
runOnChange=true
referenceUrl=jdbc:postgresql://localhost:5432/cc
referenceUsername=postgres
referencePassword=deadline123
changelogFile=src/main/resources/db/changelog/db.changelog-master.yaml
diffChangeLogFile=src/main/resources/diff.yaml
  1. Ejecutar el comando para generar el registro de cambios para el estado actual de la base de datos:
    “`shell
    mvn liquibase:generateChangeLog
    “`
  2. Luego ejecutar el comando para sincronizar el registro de cambios y crear la entrada en la base de datos:
    “`shell
    mvn liquibase:changelogSync
    “`

    1. Iniciar mi aplicación, pero arroja un error de relación que ya existe. No puedo entender por qué Liquibase está ejecutando cambios que ya se han ejecutado. Estoy usando Liquibase 4.6.3.
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Es posible que ya hayas ejecutado el conjunto de cambios manualmente o a través de otra herramienta sin actualizar la tabla databasechangelog de Liquibase. Liquibase determina qué conjuntos de cambios aplicar en función de las entradas en la tabla databasechangelog. Por lo tanto, si el conjunto de cambios ya ha sido ejecutado y la entrada falta en la tabla databasechangelog, Liquibase intentará ejecutarlo nuevamente.

    Para resolver este problema, puedes intentar agregar la opción --skipIfAlreadyApplied al comando mvn liquibase:update para omitir los conjuntos de cambios que ya se hayan aplicado. Alternativamente, puedes actualizar manualmente la tabla databasechangelog para marcar el conjunto de cambios como ejecutado.

Comments are closed.