記錄一次程序輸出和DB查詢不匹配的問題

今天發生一件很神奇的事情,我用TP讀取DB數據,而後打印出來的數據,和直接經過sequal pro查詢出來的數據(某一列),怎麼對都對不起來,我嘗試緩存

  • 清空TP緩存
  • MYSQL服務重啓
  • mac重啓

都無功而返,最後我發現問題出在這裏app

$model = new Model();
$model->startTrans();
.
.
.
.
.

// 寫明細
$saveData = $this->getChkSaveItems($refund_items);
$saveData && $flag = $applyItem->saveAll($saveData);

//這裏是重點
// $model->commit();

$refund_rst = M('b2b_refunds_apply_item')->field($fields)->group("{$voucher_type}")->where($where)->select();
        
echo '<pre>';
print_r($refund_rst);
echo '</pre>';
exit;

也就是說,我在打印數據的時候還在事務以內,還沒commit或者rollback,而在打印這個結果以前,我剛對該列執行了update操做,因此以後我再讀取這一列,實際上讀取的是內存的值,並非DB裏的值。只有commit或者rollback以後,我再打印,那就和DB的值一致了。this

相關文章
相關標籤/搜索