2012-02-29 40 views
2

我有一個控制器可以上傳到主機服務器和另一個上傳到YouTube的控制器。前控制員完成工作後,重定向到後者。特別長的上傳過程,其中涉及YouTube後,我得到的「MySQL服務器消失」的錯誤Codeigniter數據庫重新連接不起作用

我用這個代碼重新連接到數據庫,笨來解決這個問題。

$this->db->reconnect(); 

相反,我得到了一個錯誤

A Database Error Occurred 
Unable to select the specified database: test_database 
.... 

我嘗試過和「重新連接」代碼之後添加此代碼,但它並沒有幫助(「測試」下面是活動組的名稱我正在使用的數據庫配置。)

$this->load->database('test'); 

任何人都有一個想法如何解決這個問題?

回答

4

調用重新連接()與在MySQL中禁用自動重新連接將引發錯誤,並根據您的配置文件中的錯誤狀態和PHP安裝將顯示並記錄錯誤。

做它只是關閉連接和手動重新連接的最佳方式:

 

$this->db->close(); 
$this->db->initialize(); 
 

希望它可以幫助

+0

我不認爲這 - $> DB->初始化()函數存在。我假設你的意思是$ this-> db-> load()。 – arvinsim 2012-03-01 01:32:57

+0

對於CI 2.1.3,存在'$ this-> db-> initialize()'方法'system/database/DB_driver.php' – machineaddict 2015-02-05 12:52:51

2

你可能真的要擴展數據庫類,然後實現自己的重新連接的過程。您可以實現這樣的事情:

... 
if(!mysql_ping($this -> conn_id)) { 
    $this -> _close(); 
    $this -> db_connect(); 
} 
... 

要知道如何擴展數據庫類看到此鏈接:

Extending Database Drivers