我有一个控制器负责上传到主机服务器,另一个控制器则负责上传到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();
}
...
要了解如何扩展数据库类,请参阅以下链接:
扩展数据库驱动程序