存储过程将codeigniter与mysql数据库断开连接

Posted

技术标签:

【中文标题】存储过程将codeigniter与mysql数据库断开连接【英文标题】:Stored procedure disconnecting codeigniter from mysql database 【发布时间】: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 有类似的经验?谢谢。

【问题讨论】:

【参考方案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();

【讨论】:

以上是关于存储过程将codeigniter与mysql数据库断开连接的主要内容,如果未能解决你的问题,请参考以下文章

PHP CodeIgniter - MySQL 工作台

Codeigniter缩略图图像路径不能存储在MySql中

如何在 CodeIgniter 中调用存储过程?

如何将文件图像存储到 mysql (Codeigniter)

使用CodeIgniter在mySql数据库中未存储货币符号

在codeigniter中调用存储过程