[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 メーリングリストの案内