[Seasar-user:11678] Re: [DBFlute] SQLコマンドが正しく終了されていません が発生します

kubo [E-MAIL ADDRESS DELETED]
2007年 11月 16日 (金) 15:34:06 JST


久保です。

> > insertOrUpdateNonstrictをかけると,以下のようにSQLコマンドが正しく終了されていませんが発生していまいます.
> > 原因を探っているのですが,ちょっと不明です.
> > insertOrUpdateNonstrictを使っている理由としては,CSVのデータをDBにインポートするために使っております.
> > 
> > 見た感じ WHERE句のところがWで切れているのですが,これはどうなんでしょうか?
> > 
> > S2Daoは1.0.47-RC1です.
> 
> 取り急ぎ確認させて下さい。
> 該当のテーブルに主キーが貼られていますでしょうか?
> (自動生成時はPK制約があっても、実行時のテーブルに無いとか)
> 
> 
> # ある状況で、よく発生する現象だったはず...>S2Dao

UpdateAutoDynamicCommand#createUpdateSql()の

buf.append(" WHERE ");
for (int i = 0; i < bmd.getPrimaryKeySize(); ++i) {
    buf.append(bmd.getPrimaryKey(i));
    buf.append(" = ? AND ");
}
buf.setLength(buf.length() - 5);

が、まさしくそこですね。


ありうる原因としては、

A. 自動生成時はPK制約があっても、実行時のテーブルに無い
     → 付ければ解決
     → 普通のupdate()でも発生するはず

B. 内部処理としてPK情報を取得できてない。(PK制約はあるのに)
     → DBFlute内部で何かしらの不具合!?

というところです。

まず、実行時のテーブルのPK制約の確認をお願いします。





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