YII 事物無效問題 HELP HELP HELP HELP HELP HELP

來源:互聯網
上載者:User
各位大神們 入門PHP程式員求協助

Yii事物

官方寫法:
       $transaction=$connection->beginTransaction();        try        {            $connection->createCommand($sql1)->execute();            $connection->createCommand($sql2)->execute();            //.... other SQL executions            $transaction->commit();        }        catch(Exception $e)        {            $transaction->rollBack();        }


自己封裝的寫法:
說明:$this->getDb()是父類通過Yii 擷取到的$connection對象
我只是在執行個體化的時候把$connection對象傳到Db層,然後Db層進行增刪改查等操作
但是在DB層的時候,執行excuse()方法時候直接插入到資料庫了,事物沒起作用,求解!!!
service層
 public function addCourseRecommend($courseRecommend,$payWayArray)    {        try{            $connection=$this->getDb();            $transaction=$connection->beginTransaction();            $this->courseRecommendDb= new CourseRecommendDb($connection);            $this->payWayDb=new PayWayDb($connection);            $this->courseRecommendDb->addCourseRecommend($courseRecommend);            foreach($payWayArray as $tempPayWay)            {                $this->payWayDb->addPayWay($tempPayWay);                $tempPayWayRecommend =new PayWayRecommend();                $this->payWayDb->addPayWayRecommend($tempPayWayRecommend);            }            $this->commit($transaction);        }catch (Exception $e){            $this->rollback($transaction);            $this->closeLink();            throw $e;        }        $this->closeLink();    }


回複討論(解決方案)

坐等回複

人呢,人呢。。。。。

但不明白你的代碼在做什麼
但需要注意的是:事務只在同一串連中有效
Yii 的資料庫是基於 PDO 的,每次 new PDO 都會產生新的串連(這一點是與分立函數的資料庫擴充是不同的)

但不明白你的代碼在做什麼
但需要注意的是:事務只在同一串連中有效
Yii 的資料庫是基於 PDO 的,每次 new PDO 都會產生新的串連(這一點是與分立函數的資料庫擴充是不同的)



謝謝版主,已經解決。
我這樣的做法是為了在service中調用多個業務的DB來實現事物。想法應該是沒錯的,具體錯誤已經解決了。

經過排查之後找到是資料庫引擎問題,我要操作那個表類型不知道怎麼變成 MyISAM 了。


MyISAM 和 InnoDB 講解 InnoDB和MyISAM是許多人在使用MySQL時最常用的兩個表類型,這兩個表類型各有優劣,視具體應用而定。基本的差別為:MyISAM類型不支援交易處理等進階處理,而InnoDB類型支援。MyISAM類型的表強調的是效能,其執行數度比InnoDB類型更快。

折騰了一上午,剛開始也考慮到可能是資料庫引擎問題,但是可能性比較小就忽略了,大家以後還是要細心啊!!!!
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.