消息:配置的数据库连接是持久的.正在中止


Message: Configured database connection is persistent. Aborting

Codeigniter 2到3版本升级后,我收到了这个错误。。为什么会这样?

遇到未捕获的异常

类型:异常

消息:配置的数据库连接是持久的。正在中止。

文件名:/var/www/vhosts/xxx.com/app/system/libraries/Session/derivers/Session_database_driver.php

线路编号:94

回溯:

文件:/var/www/vhosts/xxx.com/app/application/core/MY_Controller.php线路:11功能:__construct

文件:/var/www/vhosts/xxx.com/app/application/core/MY_Controller.php线路:52功能:__construct

文件:/var/www/vhosts/xxx.com/app/application/controllers/Dashboard.php线路:7功能:__construct

文件:/var/www/vhosts/xxx.com/application/index.php线路:293函数:require_one

我遇到了同样的问题,发现这只是一个更改设置的问题:

修改database.php配置文件并将"pconnect"设置为false。作为CI3框架的一部分,它将是这个阵列的一部分:

$db['default'] = array(
    'pconnect' => FALSE // This value
);

或者,如果您的配置文件看起来更像CI 2版本:

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

一点搜索似乎表明数据库不喜欢持久连接,可能是出于安全原因。

禁用database.php文件中的缓存,通过定义database.php中的缓存文件夹

'cachedir' => APPPATH.'cache/db/',

设置并仅使用

$this->db->cache_on(); 

命令中要缓存数据库查询的位置。

别忘了使用

$this->db->cache_off();

在为不需要的缓存结果选择查询之后。

当启用持久化时,codeigniter 3.0似乎不支持使用数据库的会话。形式:http://www.codeigniter.com/user_guide/libraries/sessions.html?highlight=session#session-偏好

然而,有一些条件必须满足:

仅您的默认数据库连接(或您作为来自控制器的$this->db)。您必须具有查询生成器已启用。您不能使用持久连接。你不能使用启用cache_on设置的连接。

您需要确保FALSE不带引号。如果使用"FALSE",数据库驱动程序会将其视为真正的布尔值。系统希望您直接使用FALSE,不带引号。因此,取消设置pconnect,而不是使用"FALSE"以默认为FALSE,或者如果你想保持有序,则使用FALSE作为值:)

 * Persistent connection flag
 *
 * @var bool
 */
public $pconnect        = FALSE;