[Seasar-user:21963] Re: 【DBFlute】MySQLでrewriteBatchedStatements=trueを設定した場合にbatchInsertでEntityDuplicatedExceptionが発生

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2014年 10月 7日 (火) 12:41:12 JST


加藤です。

MySQLのJDBCドライバーのバージョンを変更することで正常動作することが確認でき
ました。
他に問題ないかをテストしてバージョン変更を検討したいと思います。

短時間で解決していただき、ありがとうございました。

> 久保(jflute)です
>
> 情報ありがとうございます!
>
> 再現しました!
> diconの設定は合っていました。
>
> DBFlute-1.0.5L + MySQL-5.6-14 にて、
> (rewriteBatchedStatementsを設定した状態で)
> MySQLのJDBCドライバーのバージョンによって、
> batchInsert()の戻り値のint[]が...
>
> 5.1.12 :: {1, 1, 1, ...} => 正常動作
> 5.1.26 :: {1, 1, 1, ...} => 正常動作
> 5.1.30 :: {2以上!?, ...} => 現象発生
> 5.1.33 :: {-2, -2, -2, ...} => 正常動作
>
> というなかなかファンキーな結果となりました。
> 回避としては、もろもろテストすること前提で、
> MySQLのJDBCドライバーを変更すればOKかなというところです。
>
>
> ちなみに、ぼくの周りでもMySQLを使っているプロジェクトは多いですが、
> ReplaceSchema に rewriteBatchedStatements は設定しても、
> アプリで設定している現場をまだ見たことがありません。
> http://dbflute.seasar.org/ja/manual/reference/dbway/mysql/#fakebatch
>
> 理由は単純で、「なんだか怖いから」というところですね。
> まあ、テストちゃんとやれば別に大丈夫なんでしょうけど、
> 冒険せずbatchInsert()のスピードは諦めちゃってる感じですね...
>
>
> 2014-10-07 12:19 GMT+09:00  <2400Lz17 @ mcea.jp>:
>> 久保さん
>>
>> お世話になります。
>> 加藤です。
>>
>> 各バージョンは以下です。
>> MySQLサーバ:5.6.21
>> mysql-connector-java:5.1.30
>> DBFlute:1.0.5G
>>
>> 設定はデータソースのURLに直接記載しています。
>> <property name="url"
>> value="jdbc:mysql://localhost:3306/perf_test?useTimezone=true&amp;characterEncoding=utf8&amp;rewriteBatchedStatements=true"/>
>>
>> 発生したメッセージは以下であっています。
>> 「The entity updated two or more records in batch update...」
>>
>> お手数ですが、よろしくお願いいたします。
>>
>>> 久保(jflute)です
>>>
>>> 加藤さん、こんにちは
>>> DBFluteご利用ありがとうございます。
>>>
>>> 発生した例外のメッセージは、
>>> 「The entity updated two or more records in batch update...」
>>> というもので合っていますでしょうか?
>>>
>>> ちょっとこちらで再現してみようとしたのですがうまくいかず、
>>> jdbc.dicon周りの設定を教えて頂けないでしょうか?
>>> 自分は、XADataSourceImplのコンポーネント宣言のところで、
>>> 以下の記述を追加したのですが、batchInsert()の結果変わらずで。。。
>>>
>>> <initMethod name="addProperty">
>>>     <arg>"rewriteBatchedStatements"</arg>
>>>     <arg>"true"</arg>
>>> </initMethod>
>>>
>>> また、MySQLのバージョンとDBFluteのバージョンを
>>> 教えて頂けるとうれしいです。
>>>
>>>
>>> 2014-10-07 11:19 GMT+09:00  <2400Lz17 @ mcea.jp>:
>>>> はじめてメールいたします。
>>>> 加藤と申します。
>>>>
>>>> MySQLのJDBCドライバでrewriteBatchedStatements=trueを設定してbatchInsert(マ
>>>> ルチプルインサート)を実行したところ、org.seasar.dbflute.s2dao.sqlhandler.Tn
>>>> AbstractBatchHandler#handleBatchUpdateResultWithOptimisticLockByResultでorg.
>>>> seasar.dbflute.exception.EntityDuplicatedExceptionが発生します。
>>>>
>>>> マルチプルインサートでは1つのクエリで複数件インサートされるために結果の件数
>>>> チェックでエラーになっているのですが、何か回避策をご存知の方がいましたらご教
>>>> 示いただきたく、よろしくお願いいたします。
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Seasar-user mailing list
>>>> Seasar-user @ ml.seasar.org
>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>> _______________________________________________
>>> Seasar-user mailing list
>>> Seasar-user @ ml.seasar.org
>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>
>>
>>
>> _______________________________________________
>> Seasar-user mailing list
>> Seasar-user @ ml.seasar.org
>> https://ml.seasar.org/mailman/listinfo/seasar-user
> _______________________________________________
> Seasar-user mailing list
> Seasar-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-user
>




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