有時我的應用程序無法連接到我的數據庫。Yii:如何捕獲錯誤並重定向,如果數據庫連接失敗
如何捕獲並重定向到統計頁面?
CDbConnection failed to open the DB connection: SQLSTATE[42000] [1049] Unknown database 'given_db'
有時我的應用程序無法連接到我的數據庫。Yii:如何捕獲錯誤並重定向,如果數據庫連接失敗
如何捕獲並重定向到統計頁面?
CDbConnection failed to open the DB connection: SQLSTATE[42000] [1049] Unknown database 'given_db'
這不是最乾淨的解決方案,但您可以創建自定義DbConnection
組件:
class DbConnection extends CDbConnection
{
public function open()
{
try {
parent::open();
} catch(CDbException $e) {
Yii::app()->request->redirect(array('site/maintenance'));
}
}
}
,然後配置這是您的db
組件:
'components' => array(
'db' => array(
'class' => 'DbComponent',
缺點是:
site/maintenance
到絕對不含任何DB訪問或你無限重定向循環是的,我知道這一點,但我的應用程序內有問題;在我仔細觀察之後,事實證明,權限模塊弄亂了這些事情,因爲我的主控制器在某種程度上擴展了權限模塊,所以出現了一個循環,錯誤永遠不會發生;以同樣的方式,這次與基本的控制器,它就像一個魅力 –
如何在Yii2中捕捉這個?我嘗試但不工作! – Tchaps
你可以在下面設置組件陣列
'cache' => array('class' => 'system.caching.CDbCache'),
它將如何幫助捕捉建立CDbConnection的錯誤? – ineersa
你就不能創建自己的500錯誤頁面? 檢查此獲得更多信息:http://www.yiiframework.com/doc/guide/1.1/en/topics.error#displaying-errors
結束爲此,您需要從組件刪除在配置並手動激活它。其他方法(我不推薦它)更改open()函數,其中CDbConnection拋出異常。 – ineersa
@ineersa:絕對不是。 – Jon
@IonutFlaviusPogacian:Yii的錯誤處理機制可以毫無困難地處理這個問題。你有沒有[閱讀手冊](http://www.yiiframework.com/doc/guide/1.1/en/topics.error)? – Jon