【发布时间】:2016-09-23 11:18:56
【问题描述】:
我正在尝试使用 Codeigniter 作为框架将用户数据存储到 PgSQL 中的数据库中。
现在我创建了一个表 ci_sessions:
CREATE TABLE IF NOT EXISTS ci_sessions (
session_id varchar(40) NOT NULL DEFAULT '0',
ip_address varchar(45) NOT NULL DEFAULT '0',
user_agent varchar(120) NOT NULL,
last_activity int check (last_activity > 0) NOT NULL DEFAULT '0',
user_data text NOT NULL,
PRIMARY KEY (session_id)
) ;
CREATE INDEX last_activity_idx ON ci_sessions (last_activity);
在我的 config.php 中,这些是我的参数:
$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
在 mysql 中,这些足以将用户数据存储到数据库中。
但是对于 PgSql 我收到了很多错误:
- db 驱动程序不知道 session_id 要求我将其更改为 id
- user_agent 也是未知的,所以我不得不从数据库中删除它
- last_activity,也是未知的
- 同样,对于驱动程序,user_data 应该只是作为字段的数据。
我必须对其进行许多更改才能使其正常工作,但当我按照它的要求进行操作时,它并没有存储有关用户数据的信息,例如浏览器、用户代理等。
我的错误如下所示:
Severity: Warning消息:pg_query():查询失败:错误:列“数据”不存在 第 1 行:选择“数据”^
文件名:postgre/postgre_driver.php
行号:242
回溯:
文件:C:\wamp\www\project\application\core\MY_Controller.php 行:13 函数:__构造
文件:C:\wamp\www\project\application\libraries\Admin_Controller.php 行:10 功能:__construct
文件:C:\wamp\www\project\application\controllers\admin\Dashboard.php 行:11 函数:__construct
文件:C:\wamp\www\project\index.php 行:316 功能:require_once
【问题讨论】:
-
您确定会话表创建正确吗?请参阅此文档codeigniter.com/user_guide/libraries/…。您可以看到 mysql 和 posgresql 的会话表的表架构。
-
是的,也许我对 postgres 使用了相同的 mysql 表,这对我造成了错误
标签: php postgresql codeigniter