Liquibase diff генерирует набор изменений, используя неправильный регистр в именах таблиц

0

Я выполняю diff в удаленной базе данных mysql с использованием LiquiBase и обнаруживаю, что генерируемый набор изменений использует неправильный облик для имен таблиц (все строчные буквы). Это впоследствии приводит к сбою обновления.

  • Liquibase v1.9.5
  • База данных: MySQL
  • Локальная ОС: Windows 7
  • Удаленная ОС: Ubuntu

Я делаю что-то неправильно или это ошибка?

Здесь моя задача diff:

<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>

Это генерирует (среди других записей):

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

Запуск обновления против этой панели изменений вызывает следующее:

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

Фактическое имя таблицы - "Проект". Если я изменяю changeEntry для использования правильного корпуса, он работает.

Любые предложения о том, как правильно это сделать?

Привет

Марти

Теги:
liquibase

1 ответ

2
Лучший ответ

Кажется, это ошибка. Есть места, где мы сокращаем имена таблиц case для правильной работы с базами данных, не учитывающих регистр, но тогда это создает проблемы с чувствительными к регистру базами данных.

Улучшения в инструменте diff запланированы для LiquiBase 2.1.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню