[s2container-php5:139] S2DaoをMSSQLでトランザクションではまっています
masami sakamaki
[E-MAIL ADDRESS DELETED]
2008年 10月 16日 (木) 11:43:37 JST
masasと申します。
S2DaoをMSSQLで使っていてトランザクションがうまく動かず困っています。
s2:1.2.0
s2dao:1.1.2
DBドライバ:pdo_dblib
トランザクション: requiredTx
トランザクションをPointCutで指定して、そのメソッドを呼び出します。
メソッドの中では、daoのインスタンスからinsertを2回行っています。
1回目のinsertは成功し、2回目のinsertは失敗するのですが
(例外が発生し、PointCutしているメソッドでは例外処理は何もしていない)
このとき、1回目のinsertの分がデータベースに入ってしまいます。
どうやらトランザクションが聞いていないように思われます。
よくよく見ていると
public final function hasTransaction() {
if($this->begin){
return $this->begin;
}
try {
$this->connection->beginTransaction();
} catch(Exception $e){
$this->begin = true;
return true;
}
return false;
}
の
$this->connection->beginTransaction();
で例外が発生していました
('PDOException' with message 'This driver doesn't support transactions'
in)
これはDBのライブラリがbeginTransactionをサポートしていないのは
解るのですが、どなたか同じような経験とかで回避した方法などを
ご存じでしたらアドバイスをいただけると助かります。
よろしくお願いいたします。
S2Container-PHP5 メーリングリストの案内