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