Codeigniter 3.0 会话表名称为空字符串,因此出现错误

Posted

技术标签:

【中文标题】Codeigniter 3.0 会话表名称为空字符串,因此出现错误【英文标题】:Codeigniter 3.0 session table name is empty string, hence getting error 【发布时间】:2015-10-20 06:36:24 【问题描述】:

这是一个奇怪的场景,根据 codeigniter 文档,我们可以将会话数据保存在文件或数据库中,现在使用它们的配置这些是我在 config.php 文件上的设置

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_sessions'; // cookie name
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions'; // table name
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

现在会话表在本地服务器上运行没有任何问题,但是在实时服务器上运行时,它显示此错误

更新集last_activity = 1438164724, user_data = 'a:2:s:6:\"data\";s:6:\"value\";s:9:\"data_1\" ;s:15:\"value_1\";' WHERE session_id = 'a0b6651bab02fda101ee10c11dee9979'

我们可以清楚地看到会话表名称是空白的,现在有没有办法找出为什么它是空白的,因为我们在本地服务器和实时服务器中使用相同的设置

【问题讨论】:

表示你没有在live server上创建表 @Abdulla 嗨,实时服务器上有一张桌子,此外,我刚刚测试了 $config['sess_save_path'] = '';将此行作为空值,并且弹出相同的错误,也许是一些错误? 检查我的答案$config['sess_table_name'] 只包含表名 @Abdulla 实际上我使用的是 ci 3.0,您提供的代码来自 2.* 【参考方案1】:

确保 Session 库已加载。

$this->load->library('session');

创建表

CREATE TABLE IF NOT EXISTS `ci_sessions` (
        `id` varchar(40) NOT NULL,
        `ip_address` varchar(45) NOT NULL,
        `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
        `data` blob NOT NULL,
        PRIMARY KEY (id),
        KEY `ci_sessions_timestamp` (`timestamp`)
);

或未提供给 Codeigniter 的表详细信息。

More About CI Session

【讨论】:

是否有记录查询或表名以便我可以看到发生了什么?是的,会话库是自动加载的,我在实时服务器中也有表:)【参考方案2】:

这里没有session_table_name。因此,您可以检查以下内容, 请确保您的会话库已加载。还要检查,$this->sess_table_name 是否设置正确?请再次检查实时服务器中的配置文件

$config['sess_driver'] = 'database';
$config['sess_save_path'] = 'ci_sessions';

详情请查看此链接http://www.codeigniter.com/user_guide/libraries/sessions.html#database-driver

您也可以查看与您的问题相关的1064 error with CodeIgniter in ci_sessions table这个帖子。希望您能得到解决。

【讨论】:

我收到此错误 Undefined property: CI_Loader::$sess_table_name 当我使用会话闪存数据时它工作正常,这意味着会话库已加载并且工作 看看这篇文章,会有帮助的***.com/questions/30086348/…

以上是关于Codeigniter 3.0 会话表名称为空字符串,因此出现错误的主要内容,如果未能解决你的问题,请参考以下文章

CodeIgniter会话表SQL

两个 CodeIgniter 应用程序会话相互覆盖

CodeIgniter 会话为空

codeigniter 中的会话令牌更改

由机器人发送垃圾邮件的 CodeIgniter 会话

是否可以使用带有 Codeigniter 的 Datamapper 来获取表的字段名称?