2012-09-16 83 views
11

Estoy tratando de usar liquibase para generar el changeLog, comenzando por hacer una instantánea del estado actual de mi base de datos.Liquibase: cómo generar un registro de cambios para la base de datos existente

detalles del entorno:

  • OS: Windows 7 de 32 x 86,
  • Java JDK 1.7,
  • MySQL controlador JDBC de MySQL
  • Liquibase 2.0.5.

que ejecute lo siguiente desde la línea de comandos:

liquibase --driver=com.mysql.jdbc.Driver --changeLogFile=./structure.xml --url="jdbc:mysql://mysql.mysite.com" --username=<myuser> --password=<mypass> generateChangeLog 

Funciona muy bien, y genera el archivo de salida. Sin embargo, el archivo de salida solo contiene:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd"/> 

Y no hay tablas se crean en mi base de datos (que estaba esperando las dos tablas utilizadas para el seguimiento).

¿Qué me estoy perdiendo?


ediciones

Sí, me refiero a liquibasechanlog y mesas liquibasechangelock. Sé que deberían aparecer automáticamente en la base de datos. Mi pregunta es por qué no están allí. Y sí, el usuario provisto tiene los derechos concedidos para realizar dicha tarea.

Y no es una base de datos vacía. Tiene cerca de 20 mesas, 10 vistas, datos ...

+0

Por las dos tablas utilizadas para el seguimiento, ¿quiere decir 'liquibasechangelog' y' liquibasechangeloglock'? Esos no se administran con liquibase.xml, pero se crean automáticamente para usted. –

+0

Para ampliar lo que Christoph ha pedido. Su base de datos no contiene tablas de aplicaciones y usted pregunta por qué el registro de cambios está vacío. :-) –

+5

Tengo el mismo comportamiento que describiste si no especifico la base de datos en la url de conexión '--url =" jdbc: mysql: //mysql.mysite.com "' pero si agrego el nombre de la base de datos funciona bien: '--url =" jdbc: mysql: //mysql.mysite.com/dummy "'. – poussma

Respuesta

7

basta con especificar el nombre de la base de datos con la bandera --urlcomo ZNK dije:

--url="jdbc:mysql://mysql.mysite.com/database_name_here" 
3

me había enfrentado problema similar al generar XML cambios para PostgreSQL base de datos. Estoy publicando aquí si puede ayudar a alguien. Tuve que especificar --defaultSchemaName además de los parámetros anteriores.

El comando final se verá así:: Así que en mysql opción similar que tendrá

liquibase --driver=org.postgresql.Driver --changeLogFile=db.changelog.xml --classpath=postgresql-9.4-1201-jdbc41.jar --url="jdbc:postgresql://localhost:5432/wms" --username=<USER_NAME> --password=<PASSWD> --defaultSchemaName=<SCHEMA_NAME> generateChangeLog 
0

Después de crear el archivo inicial de cambios, debe ejecutar 'changelogsync', que va a crear esas tablas de la base de datos y las actualiza, también registra el estado actual de su registro de cambios como 'ya se ejecutó' (por lo que no se ejecutará en las próximas actualizaciones)

Cuestiones relacionadas