Uploaded image for project: 'DBFlute'
  1. DBFlute
  2. DBFLUTE-787

{Java/C#}: ReplaceSchemaでDDL実行エラーがあったらANT実行自体をFailureにする

XMLWordPrintable

    • Type: Icon: Improvement Improvement
    • Resolution: Fixed
    • Priority: Icon: Major Major
    • Component/s: None
    • None

      人間が実行する分には、最後のログを見れば判断できるが、
      Hudsonなどのプログラムから実行する場合は、ログでは判断できない。
      ANT実行のステータスをFailureにする必要がある。
      それは同時に、コマンドプロンプトのフォントを
      デフォルトのままにしている人にも有効になる。

      落ちてもいいSQLだけが落ちているような場合にもFailureになるが、
      そことはトレードオフ。どこかしらで発生せざるを得ないギャップを
      拡散させずそこに集約させる。人間はログを見れば判断できる。
      Hudsonからの実行でエラーになって欲しくないけどエラーになる、
      ということがあるかもしれない。
      どうしてもという場合のために、以下のようなオプション指定が
      DDLに指定できてもいいかもしれない。

      -- #df:ignoreError#
      create foo
      

      ただし、
      「これを前面に押し出して全てをエラー中断にしてしまえばいいいのでは」
      という理論は残念ながら成り立たない。
      なぜなら、DDLはERDツールなどから自動生成されることが多く、
      このオプションを付けることができない状況が多く考えられるから。

      ただ、落ちてもいいSQLというのは基本的にイレギュラーと考え、
      df:ignoreErrorオプションはとりあえず実装しない。
      (要望が出て来たときに検討する)

      まとめると、以下のようになる。

      o DDLエラー -> タスクを最後まで続行して中断
      o データエラー -> その場で中断

      ※中断判定要素から除外するオプションコメントはサポートしない(将来の要望次第)
      ※「DDLが落ちたらデータもエラーになる」という状況に若干のギャップあり
      => データエラー時もDDLの実行情報を出力することで解決

            Assignee:
            jflute jflute
            Reporter:
            jflute jflute
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: