6

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

遇到未捕获的异常

类型:异常

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

文件名:/var/www/vhosts/xxx.com/app/system/libraries/Session/drivers/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_once

4

4 回答 4

19

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

修改您的 database.php 配置文件并将“pconnect”设置为 false。作为 CI 3 框架的一部分,它将成为该数组的一部分:

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

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

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

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

于 2015-04-07T19:38:29.617 回答
2

在 database.php 文件中禁用缓存,在 database.php 中定义缓存文件夹

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

设置并仅使用

$this->db->cache_on(); 

命令你希望你的数据库查询被缓存。

不要忘记使用

$this->db->cache_off();

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

于 2015-10-11T11:28:04.077 回答
1

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

但是,有一些条件必须满足:

只能使用您的默认数据库连接(或您从控制器以 $this->db 访问的那个)。您必须启用查询生成器。您不能使用持久连接。您不能使用启用了 cache_on 设置的连接。

于 2015-04-10T13:55:28.257 回答
0

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

 * Persistent connection flag
 *
 * @var bool
 */
public $pconnect        = FALSE;
于 2017-06-05T18:42:29.770 回答