【问题标题】:Codeigniter database reconnect not workingCodeigniter 数据库重新连接不起作用
【发布时间】:2012-02-29 09:18:43
【问题描述】:

我有一个控制器可以上传到主机服务器,另一个控制器可以上传到 youtube。在前一个控制器完成其工作后,它会重定向到后者。在涉及 youtube 的特别长的上传过程之后,我收到“MySQL 服务器已消失”错误

我使用此代码重新连接到 Codeigniter 中的数据库以解决该问题。

$this->db->reconnect();

我得到了一个错误

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

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

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

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

【问题讨论】:

    标签: mysql codeigniter


    【解决方案1】:

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

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

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

    希望对你有帮助

    【讨论】:

    • 我不认为 $this->db->initialize() 函数存在。我假设你的意思是 $this->db->load().
    • $this->db->initialize() 方法存在 system/database/DB_driver.php 用于 CI 2.1.3
    【解决方案2】:

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

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

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

    Extending Database Drivers

    【讨论】:

      猜你喜欢
      • 2013-05-09
      • 2013-01-18
      • 2016-01-31
      • 1970-01-01
      • 2019-02-11
      • 2014-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多