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

时间:2015-04-04 13:17:51

标签: php codeigniter database-connection codeigniter-3

升级后的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 个答案:

答案 0 :(得分:13)

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

修改您的database.php配置文件并转动' pconnect'为假。作为CI 3框架的一部分,它将成为此阵列的一部分:

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

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

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

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

答案 1 :(得分:1)

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

在database.php中定义缓存文件夹
model() {
  return this.store.query('user', {
    'filter[id]': 1
  }).then((users) => {
    return users.objectAt(0);
  });
}

设置并仅使用

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

命令用于缓存数据库查询的位置。

别忘了使用

$this->db->cache_on(); 

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

答案 2 :(得分:0)

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

  

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

     

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

答案 3 :(得分:0)

你需要确保FALSE在没有引号的情况下消失。如果你使用' FALSE',数据库驱动程序将把它作为一个真正的布尔值。系统希望您直接使用FALSE,不带引号。所以,取消设置pconnect而不是使用' FALSE'为了默认为FALSE,或者如果你想保持秩序,则使用FALSE作为值:)

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