【问题标题】:Stored procedure disconnecting codeigniter from mysql database存储过程将codeigniter与mysql数据库断开连接
【发布时间】:2012-04-25 00:47:06
【问题描述】:

您好,这主要是一个概念性问题。

我在 mysql 中编写了一个存储过程,它可以正常工作并返回我期望的结果。然后我可以从我编写的 codeiigniter 库中调用该 SP。它将正确的结果提供给服务器,然后可以将正确的数据显示给客户端。但是,如果我尝试点击返回按钮或刷新页面,我会收到以下错误:

    A Database Error Occurred
    Unable to select the specified database: stage
    Filename: C:\xampp\htdocs\website\Web\system\database\DB_driver.php
    Line Number: 140

我不确定问题出在哪里。我担心这是配置问题或类似问题。我正在使用 codeigniter V 2.0.1。有没有人对 CI 中的 SP 有类似的经验?谢谢。

【问题讨论】:

    标签: php mysql codeigniter stored-procedures


    【解决方案1】:

    到那时可能会关闭与数据库的连接。检查您的config/database.php 并查看将持久连接更改为TRUE 是否有任何改变:

    $db['default']['pconnect'] = TRUE;
    

    【讨论】:

    • 谢谢,但 pconnect 已经是 TRUE。我想我可能已经想通了。对于 codeigniter,存储过程可能在其创建行中需要一个 db 名称,即 db_name.sp_name。但是,这可能无法完全解决问题,所以如果有人有更多建议,请。
    【解决方案2】:

    使用codeigniter的这条指令

    $this->db->reconnect();
    

    【讨论】:

      【解决方案3】:

      所以问题与此处列出的问题有关: http://codeigniter.com/forums/viewthread/71141/

      这最终成为 xampp 造成这些错误无法正常解决的情况,这让我相信这是其他问题。通过将我的数据库配置文件设置为使用 mysqli 并在核心中构建一个钩子来修改 codeigniter 处理从 mysqli 存储过程返回的查询的方式,一切都能够一起工作。谢谢大家的帮助,帮我找到了问题的真正根源。

      【讨论】:

        【解决方案4】:
        $db['default']['dbdriver'] = 'mysql';
        

        改成

        $db['default']['dbdriver'] = 'mysqli';
        

        【讨论】:

        • 您的更改如何解决问题?我理解您为什么希望 OP 使用 mysqli 而不是 mysql 但事实是这个问题已有 3 年历史,而您的回答并没有解决 OP 的问题。
        【解决方案5】:

        你必须重新连接到数据库

        $this->db->reconnect();
        

        【讨论】:

          猜你喜欢
          • 2011-08-25
          • 2016-09-20
          • 2023-04-11
          • 1970-01-01
          • 2015-06-17
          • 2015-09-11
          • 2016-10-29
          • 2016-12-20
          • 2019-04-15
          相关资源
          最近更新 更多