Pergunta

Estou executando um diferencial em um banco de dados MySQL remoto usando o LIFIBASE e descobrindo que o alterações gerado usa o revestimento incorreto para nomes de tabela (todos em minúsculos). Posteriormente, isso faz com que a atualização falhe.

  • LIFIBASE V1.9.5
  • Banco de dados: MySQL
  • OS local: Windows 7
  • OS remoto: Ubuntu

Estou fazendo algo errado ou isso é um bug?

Aqui está minha tarefa diferente:

<target name="diff-database" depends="prepare">
    <echo message="Diff ${database.url} to base ${production.database.url}" />
    <diffDatabaseToChangeLog driver="${database.driver}" 
        url="${production.database.url}" 
        username="${production.database.username}" 
        password="${production.database.password}" 

        baseUrl="${database.url}" 
        baseUsername="${database.username}" 
        basePassword="${database.password}" 
        outputFile="${changeLogFile}" classpathref="liquibase-path">
    </diffDatabaseToChangeLog>
</target>

Isso gera (entre outras entradas):

<changeSet author="Marty (generated)" id="1264010991558-2">
    <addColumn tableName="project">
        <column name="earliestUpdatedRevision" type="BIGINT"/>
    </addColumn>
</changeSet>    

Executar a atualização contra esse troca causa o seguinte:

liquibase.exception.MigrationFailedException: Migration failed for change set changelogs/mysql/complete/root.changelog.xml::1264010991558-2::Marty (generated):
     Reason: liquibase.exception.JDBCException: Error executing SQL ALTER TABLE `project` ADD `earliestUpdatedRevision` BIGINT:
          Caused By: Error executing SQL ALTER TABLE `project` ADD `earliestUpdatedRevision` BIGINT:
          Caused By: Table 'xxx.project' doesn't exist

O nome da tabela real é "Projeto". Se eu modificar a mudança para usar o revestimento correto, ele funciona.

Alguma sugestão sobre como fazer isso funcionar corretamente?

Cumprimentos

Marty

Foi útil?

Solução

Parece ser um bug. Existem lugares em que diminuímos os nomes das tabela de caixa para funcionar corretamente com bancos de dados insensíveis a casos, mas isso causa problemas com bancos de dados sensíveis ao caso.

As melhorias na ferramenta DIFF estão agendadas para o Liquibase 2.1.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top