codeigniter中“字段列表”中的未知列“数据”

时间:2017-03-14 07:50:52

标签: codeigniter

我正在使用带有会话的codeigniter创建一个网站。当我在codeigniter中加载欢迎页面时,它显示错误,如: -

  

错误号码:1054,'字段列表'中的未知列'数据',SELECT   数据FROM ci_sessions WHERE id =   '562a04f4kt6j4n6eehsob3vm3puuc3r5',文件名:   C:/xampp/htdocs/ci_ecom/system/database/DB_driver.php,行号:   691。

我在相应的自动加载区域中调用会话库和数据库库。我不确切地知道我在哪里犯了错误我在C中检查它:/xampp/htdocs/ci_ecom/system/database/DB_driver.php此路径区域也是.. 在我的表格中,我将列名称设为user_data,但在“字段列表”中显示未知列“数据”。

这是我的表格结构

    CREATE TABLE IF NOT EXISTS  `ci_sessions` (
        session_id varchar(40) DEFAULT '0' NOT NULL,
        ip_address varchar(45) DEFAULT '0' NOT NULL,
        user_agent varchar(120) NOT NULL,
        last_activity int(10) unsigned DEFAULT 0 NOT NULL,
        user_data text NOT NULL,
        PRIMARY KEY (session_id),
        KEY `last_activity_idx` (`last_activity`)
    );

这是我的ci会议

    $config['sess_cookie_name']     = 'ci_session';
    $config['sess_expiration']      = 7200;
    $config['sess_expire_on_close'] = FALSE;
    $config['sess_encrypt_cookie']  = FALSE;
    $config['sess_use_database']    = TRUE;
    $config['sess_table_name']      = 'ci_sessions';
    $config['sess_match_ip']        = FALSE;
    $config['sess_match_useragent'] = TRUE;
    $config['sess_time_to_update']  = 300;

    any one can u pls help what is the exact problem... 

3 个答案:

答案 0 :(得分:3)

直接的答案是以这种格式创建表格,

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中修改了会话表结构

答案 1 :(得分:0)

您的ci_sessions table没有数据字段,但在您尝试加载或写入的问题中未显示的查询中。

答案 2 :(得分:0)

我相信你在CodeIgniter 3.X中遇到过这个问题。要解决此问题:将config.php更新为如下所示。

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_session';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;