所以我不得不做一些修改以让Oracle与CI_SESSIONS一起工作。首先,我必须将配置中的表更新为全部大写。其次,我扩展了Session库类并覆盖了create_session方法,以便它使用所有大写的行名。
但是,在插入时我仍然会收到错误。关于它的奇怪之处在于,当我在pl / sql开发人员的错误中运行sql时,它工作正常。行插入没有问题。
这是sql:
INSERT INTO "CI_SESSIONS" ("SESSION_ID", "IP_ADDRESS", "USER_AGENT", "LAST_ACTIVITY", "USER_DATA") VALUES ('9df2c8be0e378bbfdc82a2808c1b3994', '172.16.1.86', 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36', 1395328370, '')
我不知道下一步该做什么,因为它在我身边工作但仍然在前端出错。
完整错误:
A Database Error Occurred
Error Number:
INSERT INTO "CI_SESSIONS" ("SESSION_ID", "IP_ADDRESS", "USER_AGENT", "LAST_ACTIVITY", "USER_DATA") VALUES ('9df2c8be0e378bbfdc82a2808c1b3994', '172.16.1.86', 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36', 1395328370, '')
Filename: /home/bgarrison/public_html/libraries/MY_Session.php
Line Number: 34
我目前正在使用Oracle 10g企业
答案 0 :(得分:2)
更改ci_sessions
表的方案,以便user_data
没有NOT NULL
约束。
在某些情况下,Oracle会将NULL
和''
视为同样的错误。
http://www.codeigniter.com/user_guide/libraries/sessions.html
中ci_sessions
表的示例架构
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`)
);
对NOT NULL
施加user_data
约束。
在INSERT SQL语句中,最后一个值(对于user_data
)是''
,在这种情况下,Oracle将NULL
视为违反NOT NULL
约束。要解决此问题,您需要更改ci_sessions
表的方案,以便user_data
没有此约束。