1

我正在使用 dbdeploy maven 插件,但是当我运行构建时它会引发错误。错误说:

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

这是因为 dbdeploy 使用的 CHANGELOG 表尚未创建。我可以看到它是如何使用示例附带的 ant 构建脚本完成的,但我无法弄清楚如何使用 maven 插件完成它(我不想在 maven 下运行 ant 任务,这会失败dbdeploy-maven-plugin 的要点)。

有任何想法吗?

4

2 回答 2

3

在浏览了 dbdeploy 源和 dbdeploy maven 插件源后,我在任何地方都看不到正在创建更改日志。与代码捆绑在一起的示例不起作用,我的印象是它完成了一半且测试不佳。

我手动创建了更改日志表,之后一切正常,但这是一个糟糕的解决方案。

谢天谢地,虽然对我来说太晚了,但我最终发现了其他有同样问题的人,他们的解决方案就在这里。简而言之,他们通过调用 maven sql 插件来运行创建变更日志的脚本。

这些都没有记录在 dbdeploy 站点中,我可能会考虑替代方案,因为这一切都感觉有点不稳定。

于 2012-08-20T11:59:38.257 回答
0

按照使用 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

于 2012-08-16T16:46:36.427 回答