[seasar-dotnet:1982] Re: DBFlute: ReplaceSchemaタスク実行時のログはどこ?

kubo [E-MAIL ADDRESS DELETED]
2011年 3月 25日 (金) 10:30:15 JST


久保(jflute)です。

伊藤さん、こんにちは
ちょっと想定外のことが発生していますね。

まず一つ目は、ログファイルが作成されないこと。
こちらの環境では問題なく作成されていて、
かつ、他でも聞いたことないので現時点で
原因はよくわかっていません。

念のためですが、DBFluteモジュールのetc/logprop配下に
log4j.properties があるかどうか確認して頂けますでしょうか?
このファイルがDBFluteタスクのログのコントロールをしています。
(これを書き換えればどのようにでもログを変えることができます)

ただ、コンソールとログファイルの内容の違いはほとんどなく、
ヘッダ情報のフォーマットが違いで、ログファイルであれば、
ログ一つ一つの出力クラスと行数がわかるというくらいです。
(そう言う意味では、ソースレベルで追跡する場合は、
やはりログファイルを見る方がいいということになります)

もう一つの問題は、
本来、テーブル作成のフェーズで今回のような
「継続エラー」が発生した場合、以下のようなログが出力されます。
取り急ぎ今こちらでも同様のエラーを発生させたときのログです。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
[Task End]: 00m03s344ms *Abort

  DBFLUTE_CLIENT: {exampledb}
    database  = h2 (H2 1.3.150 (2011-01-28))
    language  = java
    container = spring
    package   = com.example.dbflute.spring.dbflute

  DBFLUTE_ENVIRONMENT_TYPE: {df:default}
    driver = org.h2.Driver
    url    = jdbc:h2:file:../src/main/resources/exampledb/exampledb
    schema = {EXAMPLEDB.PUBLIC as main}
    user   = sa
    props  = {}
    additionalSchema =
    dataLoadingType  = ut
    refreshProject   = dbflute-spring-example

 {Create Schema}: success=96 failure=1 (in 4 files)
  x replace-schema-10-basic.sql
  DROP TABLE MEMBER
   >> テーブル "MEMBER" が見つかりません
      Table "MEMBER" not found; SQL statement:
      DROP TABLE MEMBER [42102-150]
      (SQLState=42S02 ErrorCode=42102)
  o replace-schema-20-view.sql
  o replace-schema-80-comment.sql
  o replace-schema-90-vendorcheck.sql

 {Load Data}: loaded-files=4
  (common)
  o 10-master.xls
  (ut)
  o 20-member.xls
  o 30-product.xls
  o 80-vendor.xls

 {Take Finally}: success=5 failure=0 (in 1 files)
  o take-finally.sql
    * * * * * *
    * Failure *
    * * * * * *
_/_/_/_/_/_/_/_/_/_/ {ReplaceSchema}

全てが成功したときも{Create Schema}や{Load Data}の
実行ファイル情報は出力されます。
(もしや、これも表示されませんか?)

とりあえず、こちらも原因がよくわからないところです。
ちょっとこのあとWindows起動してDBFlute.NETや
SQLServerの環境でも試してみます。
(しまった...DBFlute.NET + SQLServerの環境がない...)


#
# ちなみに、ReplaceSchemaに関しては、
# Java版、C#版と挙動に違いはないはずです。
#

2011/3/25 Junichi Ito <[E-MAIL ADDRESS DELETED]>:
> 伊藤です。
> たびたびお世話になります。
>
> DBFlute(.NET版 0.8.9.25)でReplaceSchemaタスクを実行した際に、「BUILED FAILED」が発生しました。
> 最終的にはreplace-schema.sqlのDDL文にDROP TABLE文が含まれていたことが原因であることが分かりました。
>
> ただ、いったいどのタイミングで何の原因でFAILしたのか なかなか分からず、DBFluteのソースコードを見たりして、
> ようやく原因を突き止めました。
>
> 公式ドキュメントでは「タスクの実行ログは コンソール かつ [DBFluteクライアント]/log/dbflute.log に出力されます。」
> とありますが、プロジェクトフォルダを「*.log」で検索してもログファイルは見つかりませんでした。
>
> http://dbflute.sandbox.seasar.org/ja/manual/function/generator/task/index.html#log
>
> ログファイルを出力するには何か条件やセットアップが必要なのでしょうか?
>
> また、ログファイルが正常に出力されていればコンソール画面以上に詳細なエラーログが出力されるのでしょうか?
> (ソースコードを見ていると「DfReplaceSchemaFinalInfo」というオブジェクトが何か情報を保持しているように思えますが。。。)
>
> 参考までにコンソールに出力されたメッセージをコピーします。
> ご確認よろしくお願いします。
>
>
> 伊藤
>
> ========================
> Database will be initialized. Are you ready? (y or n) y
> .\extlib\sqljdbc.jar
> .\extlib\_readme.txt
> 5 個のファイルをコピーしました
> Buildfile: ..\..\..\tools\dbflute-0.8.9.25\build-torque.xml
>
> replace-schema:
>     [echo] +-----------------------------------------------+
>     [echo] |                                               |
>     [echo] | Replace-Schema !                              |
>     [echo] |                                               |
>     [echo] +-----------------------------------------------+
> [df-take-finally] 19:32:31,671 ERROR [main]
> org.seasar.dbflute.logic.DfDBFluteTaskUtil - Look! Read the message
> below.
> [df-take-finally] /* * * * * * * * * * * * * * * * * * * * * * * * * *
> * * * * * * * *
> [df-take-finally] Failed to execute DBFlute Task 'ReplaceSchema'.
> [df-take-finally]
> [df-take-finally] [Advice]
> [df-take-finally] Check the exception messages and the stack traces.
> [df-take-finally]
> [df-take-finally] [Database Product]
> [df-take-finally] Microsoft SQL Server 9.00.4266
> [df-take-finally]
> [df-take-finally] [JDBC Driver]
> [df-take-finally] Microsoft SQL Server 2005 JDBC Driver 1.2.2828.100
> for JDBC 3.0
> [df-take-finally] * * * * * * * * * */
> [df-take-finally]
> org.seasar.dbflute.exception.DfCreateSchemaFailureException: Failed to
> create schema (Look the final info)
> [df-take-finally]       at
> org.seasar.dbflute.task.replaceschema.DfTakeFinallyTask.handleSchemaFailure(DfTakeFinallyTask.java:274)
> [df-take-finally]       at
> org.seasar.dbflute.task.replaceschema.DfTakeFinallyTask.doExecute(DfTakeFinallyTask.java:64)
> [df-take-finally]       at
> org.seasar.dbflute.task.bs.DfAbstractTask.execute(DfAbstractTask.java:93)
> [df-take-finally]       at
> org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
> [df-take-finally]       at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> [df-take-finally]       at
> sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> [df-take-finally]       at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> [df-take-finally]       at java.lang.reflect.Method.invoke(Unknown Source)
> [df-take-finally]       at
> org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
> [df-take-finally]       at org.apache.tools.ant.Task.perform(Task.java:348)
> [df-take-finally]       at org.apache.tools.ant.Target.execute(Target.java:357)
> [df-take-finally]       at
> org.apache.tools.ant.Target.performTasks(Target.java:385)
> [df-take-finally]       at
> org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
> [df-take-finally]       at
> org.apache.tools.ant.Project.executeTarget(Project.java:1298)
> [df-take-finally]       at
> org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
> [df-take-finally]       at
> org.apache.tools.ant.Project.executeTargets(Project.java:1181)
> [df-take-finally]       at org.apache.tools.ant.Main.runBuild(Main.java:698)
> [df-take-finally]       at org.apache.tools.ant.Main.startAnt(Main.java:199)
> [df-take-finally]       at
> org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
> [df-take-finally]       at
> org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
>
> BUILD FAILED
> C:\~\dbflute-0.8.9.25\build-torque.xml:234: org.seasar.dbf
> lute.exception.DfDBFluteTaskFailureException:
> /* * * * * * * * * * * * * * * * * * * * * * *
> Failed to execute DBFlute task: ReplaceSchema
> Look at the log: console or dbflute.log
> * * * * * * * * * */
>
> Total time: 4 seconds
> 続行するには何かキーを押してください . . .
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


seasar-dotnet メーリングリストの案内