繁体   English   中英

Codeigniter Oracle和CI_SESSIONS

[英]Codeigniter Oracle and CI_SESSIONS

所以我不得不进行一些修改以使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企业

更改ci_sessions表的方案,以便user_data没有NOT NULL约束。

该故障是甲骨文对待的方式NULL''在某些情况下是相同的。

来自http://www.codeigniter.com/user_guide/libraries/sessions.htmlci_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`)
);

user_data上强制使用NOT NULL约束。

在INSERT SQL语句中,最后一个值(对于user_data )是'' ,在这种情况下,Oracle将NULL视为NULL ,这会破坏NOT NULL约束。 要解决此问题,您需要更改ci_sessions表的方案,以便user_data没有此约束。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM