Codeigniter数据库重新连接不起作用



我有一个控制器负责上传到主机服务器,另一个控制器则负责上传到youtube。在前一个控制器完成其工作后,它重定向到后一个控制器。经过一个涉及youtube的特别长的上传过程,我得到了"MySQL服务器已经消失"错误

我用这个代码重新连接到Codeigniter中的数据库来解决这个问题。

$this->db->reconnect();

相反,我得到了一个错误

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

我尝试在"重新连接"代码之前和之后添加此代码,但没有帮助(下面的"测试"是我正在使用的数据库配置中活动组的名称。)

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

有人知道如何解决这个问题吗?

在MySQL中禁用自动重新连接的情况下调用reconnect()将引发错误,根据您在配置文件和PHP安装中的错误状态,将显示并记录错误。

最好的方法是关闭连接并手动重新连接:


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

希望它能帮助

您可能实际上想要扩展数据库类,然后实现自己的重新连接过程。你可以实现这样的东西:

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

要了解如何扩展数据库类,请参阅以下链接:

扩展数据库驱动程序

最新更新