[Seasar-user:15684] Re: [DBFlute]ReplaceSchemaがシノニムをDROP TABLEしようとする。

西山 はじめ [E-MAIL ADDRESS DELETED]
2008年 9月 5日 (金) 22:49:28 JST


お世話になっております。
西山です。

 > いや、SELECT以外も対応しています。
 > outsideSql().execute(path, pmb);

申し訳ありません。出来ました。
ドキュメントになく、変なSQLの書き方でもしたのかエラーが出た 
為に無いものと早とちりしておりました。

BehaviorBasicTest.javaの方に、Updateがありました。

すでにS2JDBCで実装したあとなんですが、後々を考えて移行してお 
きます。

色々とありがとうございました。

[2008/09/05 22:12] kubo さんは書きました。:
> 久保です。
> 
>> 実は、insert、updateもあります。
>> 外だしSQLは、SELECT以外は対応していなかったですよね。
>> (一応、試みてみましたが「SELECT句が見つかりません」となりま した)
> 
> いや、SELECT以外も対応しています。
> outsideSql().execute(path, pmb);
> 
>>> https://www.seasar.org/issues/browse/DBFLUTE-322
>> 本当に例外中の例外だと思いますが、あると心強いです。
>> ご検討のほどよろしくお願いいたします。
>>
>> AとBはどちらも一長一短だと思いますが、あくまで一ユーザーの感 想としましては、Bです。
>>
>> 理由:FK、PKなどの追加設定は全てdfpropに統一して保存すること ができる。
>> 設定がばらけると、見逃してしまいやすかったです。
> 
> ご意見ありがとうございます。
> 貴重な意見として再度検討したいと思います。
> 
> 2008/9/5 西山 はじめ <[E-MAIL ADDRESS DELETED]>:
>> お世話になっております。
>> 西山です。
>>
>>> ちなみに外だしSQLでよければ、
>>> どこかのテーブルのBehaviorを間借りして、
>>> 「SQL文の中身」を該当のシノニムのものにすれば
>>> Sql2EntityでEntityを自動生成して(もしくは自作して)、
>>> 普通にシノニムにアクセスすることは可能なはずです。
>> 実は、insert、updateもあります。
>> 外だしSQLは、SELECT以外は対応していなかったですよね。
>> (一応、試みてみましたが「SELECT句が見つかりません」となりま した)
>>
>> A.DBFluteのプロジェクトを複数DB対応にする。
>> B.SYNONYMを利用して、同じDB内でアクセスする。
>> C.別プロジェクトに切り分ける。
>>
>> 以上の案を検討した結果、SYNONYM対応されているのならば、同じ DB上で扱えるBがいいのではないかと思った次第です。
>> C.は、Webで扱う関係上複雑になると思ったので却下しました。
>>
>>> また、今後こういう機能も検討します。
>>> https://www.seasar.org/issues/browse/DBFLUTE-322
>> 本当に例外中の例外だと思いますが、あると心強いです。
>> ご検討のほどよろしくお願いいたします。
>>
>> AとBはどちらも一長一短だと思いますが、あくまで一ユーザーの感 想としましては、Bです。
>>
>> 理由:FK、PKなどの追加設定は全てdfpropに統一して保存すること ができる。
>> 設定がばらけると、見逃してしまいやすかったです。
>>
>>>> エレメント・タイプ "table" のコンテンツが不完全です、
>>>> " (column+,(foreign-key|index|unique|id-method-parameter)*)"
>>>> と一致しなければなりません。  project-schema-artap.xml
>>>> artap/mydbflute/dbflute-0.7.8/schema  行 4
>>> こちら、もしかしたら、
>>> カラム情報が空っぽのために発生しているかもしれません。
>>> (カラム情報が一つでもあれば発生しないかも)
>> 確かに空だと発生しませんでした。
>> 本来あり得ない構造だからってことですね。
>> お手数おかけしました。
>>
>> お忙しい中ありがとうございました。
>>
>> [2008/09/05 21:22] kubo さんは書きました。:
>>> 久保です。
>>>
>>>>>> 取り急ぎ、こちらの件だけ対応してました。
>>>>>> http://dbflute.sandbox.seasar.org/download/dbflute/dbflute-0.8.0.zip
>>>>>> (SNAPSHOTとなります)
>>>>>> でSYNONYMはDropできます。
>>>>> でよろしくお願いします。
>>>> 確認できました。ありがとうございます。
>>> ご報告ありがとうございます!
>>>
>>>> Oracle 9iは9iでも、パッチが全くあたっていないバージョン (9.2.0.1)を使用せざるを得ない状態です。(今年度後半にはサー
>>>> バー入れ替えがある予定なので、その時にOracleバージョンアップ も提案する予定です)
>>>>
>>>> 少し急ぎで実装する必要がある所なので、当面はS2JDBCでしのごう と思います。
>>> 了解です。急ぎということで回避お願いします。
>>>
>>> ちなみに外だしSQLでよければ、
>>> どこかのテーブルのBehaviorを間借りして、
>>> 「SQL文の中身」を該当のシノニムのものにすれば
>>> Sql2EntityでEntityを自動生成して(もしくは自作して)、
>>> 普通にシノニムにアクセスすることは可能なはずです。
>>>
>>> また、今後こういう機能も検討します。
>>> https://www.seasar.org/issues/browse/DBFLUTE-322
>>>
>>>> エレメント・タイプ "table" のコンテンツが不完全です、
>>>> " (column+,(foreign-key|index|unique|id-method-parameter)*)"
>>>> と一致しなければなりません。  project-schema-artap.xml
>>>> artap/mydbflute/dbflute-0.7.8/schema  行 4
>>> こちら、もしかしたら、
>>> カラム情報が空っぽのために発生しているかもしれません。
>>> (カラム情報が一つでもあれば発生しないかも)
>>>
>>> 2008/9/5 西山 はじめ <[E-MAIL ADDRESS DELETED]>:
>>>> お世話になっております。
>>>> 西山です。
>>>>
>>>>> 「Drop Table シノニム」で落ちてしまう件は、
>>>>>
>>>>>> 取り急ぎ、こちらの件だけ対応してました。
>>>>>> http://dbflute.sandbox.seasar.org/download/dbflute/dbflute-0.8.0.zip
>>>>>> (SNAPSHOTとなります)
>>>>>> でSYNONYMはDropできます。
>>>>> でよろしくお願いします。
>>>> 確認できました。ありがとうございます。
>>>>
>>>>> #
>>>>> # どうしてもクリアしなければならない問題は
>>>>> # カラム情報が取得できてないところですね。。。
>>>>> #
>>>> Oracle 9iは9iでも、パッチが全くあたっていないバージョン (9.2.0.1)を使用せざるを得ない状態です。(今年度後半にはサー
>>>> バー入れ替えがある予定なので、その時にOracleバージョンアップ も提案する予定です)
>>>>
>>>> 少し急ぎで実装する必要がある所なので、当面はS2JDBCでしのごう と思います。
>>>>
>>>>
>>>> [2008/09/05 20:10] kubo さんは書きました。:
>>>>> 久保です。
>>>>>
>>>>> 西山さん、ありがとうございます。
>>>>> 情報提供ありがとうございます!
>>>>>
>>>>> 「Drop Table シノニム」で落ちてしまう件は、
>>>>>
>>>>>> 取り急ぎ、こちらの件だけ対応してました。
>>>>>> http://dbflute.sandbox.seasar.org/download/dbflute/dbflute-0.8.0.zip
>>>>>> (SNAPSHOTとなります)
>>>>>> でSYNONYMはDropできます。
>>>>> でよろしくお願いします。
>>>>>
>>>>>
>>>>>>> 主キーや外部キーが取得できないと聞いておりましたが、
>>>>>>> http://d.hatena.ne.jp/jflute/20080822/1219377402
>>>>>>> 主キーや外部キー意外のカラム情報も全く取得できない
>>>>>>> 状態でしょうか?
>>>>>> カラム情報が全く取得できていません。
>>>>>> project-schema.xmlの、スキーマの中が空です。
>>>>> そうですか。こちらでは再現ができていないのですが、
>>>>> Oracleのバージョン違いの問題かもしれませんね・・・
>>>>>
>>>>>
>>>>>> エレメント・タイプ "table" のコンテンツが不完全です、"
>>>>>> (column+,(foreign-key|index|unique|id-method-parameter)*)"
>>>>>> と一致しなければなりません。
>>>>>>  project-schema-artap.xml artap/mydbflute/dbflute-0.7.8/schema
>>>>>> 行 4
>>>>>> XML 問題
>>>>>>
>>>>>> Pleiadesを使用していますので、日本語化されています。
>>>>> ありがとうございます。
>>>>>
>>>>>
>>>>>> A.
>>>>>> ほとんどはテーブルですが、別DBのデータを更新する必要があり、 一部のテーブルだけ、DBリンク+シノニムでアクセスしようと思い ました。
>>>>>>
>>>>>> B.
>>>>>> 混ざります。可能ならば、シノニムと普通のテーブルのFKも張ろう と考えております。
>>>>>>
>>>>> 了解しました。ありがとうございます。
>>>>> additionalPrimaryKeyMapとadditionalForeignKeyMapで
>>>>> 対応できるかと思います。
>>>>>
>>>>> #
>>>>> # どうしてもクリアしなければならない問題は
>>>>> # カラム情報が取得できてないところですね。。。
>>>>> #
>>>>>
>>>>> 2008/9/5 西山 はじめ <[E-MAIL ADDRESS DELETED]>:
>>>>>> お世話になっております。
>>>>>> 西山です。
>>>>>>
>>>>>> インラインで失礼します。
>>>>>>
>>>>>>>> シノニムを、「DROP TABLE シノニム名」が実行され処理がそこで
>>>>>>>> ストップしてしまいます。
>>>>>>> 具体的に発生する例外を教えて頂けますでしょうか?
>>>>>> 長いので添付にいたします。
>>>>>>
>>>>>>>> 実行環境ではシノニムのカラム情報が取得できていないらしく、
>>>>>>>> project-schema.xml、
>>>>>>>> bsentity.Bs~クラスに、カラム情報が全くありませんでした。
>>>>>>> 主キーや外部キーが取得できないと聞いておりましたが、
>>>>>>> http://d.hatena.ne.jp/jflute/20080822/1219377402
>>>>>>> 主キーや外部キー意外のカラム情報も全く取得できない
>>>>>>> 状態でしょうか?
>>>>>> カラム情報が全く取得できていません。
>>>>>> project-schema.xmlの、スキーマの中が空です。
>>>>>>
>>>>>>>> あと、些細なことですがproject-schema.xmlに type="SYNONYM"が
>>>>>>>> あると、DTDと内容が合わなくなり、Eclipse上でエラーとなりました。
>>>>>>> なるほど、これは想定しませんでした。
>>>>>>> DTD(どう直せば良いか...)確認します。
>>>>>>>
>>>>>> エレメント・タイプ "table" のコンテンツが不完全です、"
>>>>>> (column+,(foreign-key|index|unique|id-method-parameter)*)"
>>>>>> と一致しなければなりません。
>>>>>>  project-schema-artap.xml artap/mydbflute/dbflute-0.7.8/schema
>>>>>> 行 4
>>>>>> XML 問題
>>>>>>
>>>>>> Pleiadesを使用していますので、日本語化されています。
>>>>>>
>>>>>>> また、シノニムの利用ですが、
>>>>>>> 具体的にどのような用途で利用されているか
>>>>>>> 参考までに教えてもらってもよろしいでしょうか?
>>>>>>>
>>>>>>> A. DBアクセスは全てシノニム経由を想定している?
>>>>>>> B. テーブルアクセスとシノニムアクセスを混ざる?
>>>>>>> など
>>>>>> A.
>>>>>> ほとんどはテーブルですが、別DBのデータを更新する必要があり、 一部のテーブルだけ、DBリンク+シノニムでアクセスしようと思い ました。
>>>>>>
>>>>>> B.
>>>>>> 混ざります。可能ならば、シノニムと普通のテーブルのFKも張ろう と考えております。
>>>>>>
>>>>>>
>>>>>>> 2008/9/5 西山 はじめ <[E-MAIL ADDRESS DELETED]>:
>>>>>>>> お世話になっております。
>>>>>>>> 西山です。
>>>>>>>>
>>>>>>>> 申し訳ありません。追加です。
>>>>>>>> 実行環境ではシノニムのカラム情報が取得できていないらしく、
>>>>>>>> project-schema.xml、
>>>>>>>> bsentity.Bs~クラスに、カラム情報が全くありませんでした。
>>>>>>>>
>>>>>>>> 以上よろしくお願いいたします。
>>>>>>>>
>>>>>>>> あと、些細なことですがproject-schema.xmlに type="SYNONYM"が
>>>>>>>> あると、DTDと内容が合わなくなり、Eclipse上でエラーとなりました。
>>>>>>>>
>>>>>>>> [2008/09/05 15:45] 西山 はじめ さんは書きました。:
>>>>>>>>> お世話になっております。
>>>>>>>>> 西山と申します。
>>>>>>>>>
>>>>>>>>> databaseInfoMapに
>>>>>>>>>    ; propertiesMap= map:{includeSynonyms=true}
>>>>>>>>> build.propertiesに
>>>>>>>>> torque.database.type.list = list:{TABLE;VIEW;SYNONYM}
>>>>>>>>> を設定して、replace-shema.batを実行したところ、
>>>>>>>>> シノニムを、「DROP TABLE シノニム名」が実行され処理がそこで
>>>>>>>>> ストップしてしまいます。
>>>>>>>>>
>>>>>>>>> jdbc.bat、generate.batではエラーとなりません。
>>>>>>>>>
>>>>>>>>> 仕様バージョン・環境は以下のとおりです。
>>>>>>>>>  DBFlute 0.7.9
>>>>>>>>>  Oracle 9.2.0.1
>>>>>>>>>
>>>>>>>>> 以上よろしくお願いいたします。
>>>>>>>>>
>>>>>>>> --
>>>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>>>> 株式会社フジミック システム開発センター ソフト開発2部
>>>>>>>> 西山 創
>>>>>>>> [E-mail]:[E-MAIL ADDRESS DELETED]
>>>>>>>>
>>>>>>>> 〒140-0002 品川区東品川3-32-42 フジテレビ別館7F
>>>>>>>> [TEL]:03-5495-1060
>>>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Seasar-user mailing list
>>>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>>>>>>
>>>>>> --
>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>> 株式会社フジミック システム開発センター ソフト開発2部
>>>>>>  西山 創
>>>>>> [E-mail]:[E-MAIL ADDRESS DELETED]
>>>>>>
>>>>>> 〒140-0002 品川区東品川3-32-42 フジテレビ別館7F
>>>>>> [TEL]:03-5495-1060
>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>>
>>>>>> 2008-09-05 18:57:17,131 [main] INFO
>>>>>>  (DfTableHandler#logDatabaseTypes():141)
>>>>>> - $ DatabaseTypes are 'TABLE - VIEW - SYNONYM'
>>>>>> 2008-09-05 18:57:17,381 [main] INFO
>>>>>>  (DfSchemaInitializerJdbc#callbackDropTableByJdbc():236) - drop table
>>>>>> ATM01
>>>>>> 2008-09-05 18:57:17,396 [main] ERROR (DfAbstractTask#execute():88) -
>>>>>> execute() threw the exception!
>>>>>> java.lang.RuntimeException: java.sql.SQLException: ORA-00942:
>>>>>> �\�������r���[���������������B
>>>>>>
>>>>>>      at
>>>>>>
>>>>>>
>>>>>> org.seasar.dbflute.helper.jdbc.schemainitializer.DfSchemaInitializerJdbc.callbackDropTableByJdbc(DfSchemaInitializerJdbc.java:257)
>>>>>>      at
>>>>>>
>>>>>>
>>>>>> org.seasar.dbflute.helper.jdbc.schemainitializer.DfSchemaInitializerJdbc.dropTable(DfSchemaInitializerJdbc.java:211)
>>>>>>      at
>>>>>>
>>>>>>
>>>>>> org.seasar.dbflute.helper.jdbc.schemainitializer.DfSchemaInitializerJdbc.initializeSchema(DfSchemaInitializerJdbc.java:83)
>>>>>>      at
>>>>>>
>>>>>>
>>>>>> org.seasar.dbflute.task.replaceschema.DfCreateSchemaTask.initializeSchema(DfCreateSchemaTask.java:74)
>>>>>>      at
>>>>>>
>>>>>>
>>>>>> org.seasar.dbflute.task.replaceschema.DfCreateSchemaTask.doExecute(DfCreateSchemaTask.java:51)
>>>>>>      at
>>>>>>
>>>>>> org.seasar.dbflute.task.bs.DfAbstractTask.execute(DfAbstractTask.java:83)
>>>>>>      at
>>>>>> org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
>>>>>>      at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
>>>>>>      at
>>>>>>
>>>>>>
>>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>>>>      at java.lang.reflect.Method.invoke(Method.java:597)
>>>>>>      at
>>>>>>
>>>>>>
>>>>>> org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
>>>>>>      at org.apache.tools.ant.Task.perform(Task.java:348)
>>>>>>      at org.apache.tools.ant.Target.execute(Target.java:357)
>>>>>>      at org.apache.tools.ant.Target.performTasks(Target.java:385)
>>>>>>      at
>>>>>> org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
>>>>>>      at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
>>>>>>      at
>>>>>>
>>>>>>
>>>>>> org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
>>>>>>      at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
>>>>>>      at org.apache.tools.ant.Main.runBuild(Main.java:698)
>>>>>>      at org.apache.tools.ant.Main.startAnt(Main.java:199)
>>>>>>      at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
>>>>>>      at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
>>>>>> Caused by: java.sql.SQLException: ORA-00942:
>>>>>> �\�������r���[���������������B
>>>>>>
>>>>>>      at
>>>>>>
>>>>>>
>>>>>> oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:74)
>>>>>>      at
>>>>>>
>>>>>> oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:110)
>>>>>>      at
>>>>>>
>>>>>>
>>>>>> oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:171)
>>>>>>      at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455)
>>>>>>      at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413)
>>>>>>      at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1030)
>>>>>>      at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:183)
>>>>>>      at
>>>>>> oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:936)
>>>>>>      at
>>>>>>
>>>>>>
>>>>>> oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1222)
>>>>>>      at
>>>>>>
>>>>>>
>>>>>> oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1770)
>>>>>>      at
>>>>>> oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1739)
>>>>>>      at
>>>>>>
>>>>>>
>>>>>> oracle.jdbc.driver.OracleStatementWrapper.execute(OracleStatementWrapper.java:298)
>>>>>>      at
>>>>>>
>>>>>>
>>>>>> org.seasar.dbflute.helper.jdbc.schemainitializer.DfSchemaInitializerJdbc.callbackDropTableByJdbc(DfSchemaInitializerJdbc.java:238)
>>>>>>      ... 21 more
>>>>>>
>>>>>> _______________________________________________
>>>>>> Seasar-user mailing list
>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>>>>
>>>>>>
>>>>>
>>>> --
>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>> 株式会社フジミック システム開発センター ソフト開発2部
>>>>  西山 創
>>>> [E-mail]:[E-MAIL ADDRESS DELETED]
>>>>
>>>> 〒140-0002 品川区東品川3-32-42 フジテレビ別館7F
>>>> [TEL]:03-5495-1060
>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>
>>>> _______________________________________________
>>>> Seasar-user mailing list
>>>> [E-MAIL ADDRESS DELETED]
>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>>
>>>
>>>
>>
>> --
>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>> 株式会社フジミック システム開発センター ソフト開発2部
>>  西山 創
>> [E-mail]:[E-MAIL ADDRESS DELETED]
>>
>> 〒140-0002 品川区東品川3-32-42 フジテレビ別館7F
>> [TEL]:03-5495-1060
>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
> 
> 
> 


-- 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
株式会社フジミック システム開発センター ソフト開発2部
 西山 創
[E-mail]:[E-MAIL ADDRESS DELETED]
 
〒140-0002 品川区東品川3-32-42 フジテレビ別館7F
[TEL]:03-5495-1060
++++++++++++++++++++++++++++++++++++++++++++++++++++++++



Seasar-user メーリングリストの案内