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 プラグイン ソースを調べたところ、変更ログが作成されている場所がどこにもありません。コードにバンドルされている例は機能しません。半分完成したものであり、テストが不十分であるという印象を受けます。

私は手動で changelog テーブルを作成し、その後はうまくいきましたが、それは貧弱な解決策です。

ありがたいことに、私には遅すぎましたが、最終的に同じ問題を抱えている他の人を発見しました。彼らの解決策はここにあります. つまり、maven sql プラグインを呼び出して、変更ログを作成するためのスクリプトを実行します。

これはどれも dbdeploy サイトに文書化されていません。これはすべて少し不安定に感じられるため、おそらく代替案を検討します。

于 2012-08-20T11:59:38.257 に答える
0

Using Maven Pluginページに記載されているように、次のコマンドを実行します...

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 に答える