Плагин dbdeploy maven не находит таблицу изменений

Я использую плагин dbdeploy maven, но он выдает ошибку при запуске сборки. Ошибка говорит:

 [ERROR] com.dbdeploy.exceptions.SchemaVersionTrackingException: Could not retrieve change log from database because: user lacks privilege or object not found: CHANGELOG

Это связано с тем, что таблица CHANGELOG, которую использует dbdeploy, не была создана. Я могу видеть, как это делается с помощью скрипта ant build, который поставляется с примерами, но я не могу понять, как это сделать с помощью плагина maven (я не хочу запускать задачу ant под maven, которая побеждает точка dbdeploy-maven-plugin).

Есть идеи?

2 ответа

Решение

Пролистав источник dbdeploy и источник плагина dbdeploy maven, я нигде не вижу, что создается список изменений. Пример, поставляемый в комплекте с кодом, не работает, у меня сложилось впечатление, что он наполовину закончен и плохо проверен.

Я вручную создаю таблицу изменений, и после этого все работает, но это плохое решение.

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

Ничего из этого не задокументировано на сайте dbdeploy, я, вероятно, рассмотрю альтернативы, учитывая, что все это выглядит немного странно.

Выполнение следующей команды, как описано на странице Использование подключаемого модуля Maven...

mvn help:describe -Dplugin=com.dbdeploy:maven-dbdeploy-plugin -Ddetail

мы видим следующую цель, которая помогает генерировать список изменений

dbdeploy:change-script
  Description: Maven goal for creating a new timestamped dbdeploy change
    script.
  Implementation: com.dbdeploy.mojo.CreateChangeScriptMojo
  Language: java

  Available parameters:

    name (Default: new_change_script)
      Expression: ${dbdeploy.script.name}
      Name suffix for the file that will be created (e.g.
      add_email_to_user_table).

    scriptdirectory (Default: ${project.src.directory}/main/sql)
      Expression: ${dbdeploy.scriptdirectory}
      Directory where change scripts reside.

Поэтому я думаю, что мы выполнили бы это до других целей, таких как db-scripts а также update,

Другие вопросы по тегам