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

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

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

Я что-то не так делаю, или это ошибка?

Вот моя задача:

<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 для использования правильного кожуха, он будет работать.

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

Привет

Marty

1 Ответ

2 голосов
/ 21 января 2010

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

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

...