Codeigniter Oracle和CI_SESSIONS

比尔·加里森

因此,我必须进行一些修改才能使Oracle与CI_SESSIONS一起使用。首先,我必须将配置中的表全部更新为大写。其次,我扩展了Session库类并覆盖了create_session方法,以便它使用所有大写的行名。

但是,在插入即时消息上仍然出现错误。奇怪的是,当我在pl / sql developer中的错误中运行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约束。

错误是Oracle处理的方式NULL''在某些情况下也是相同的。

ci_sessions的示例架构来自http://www.codeigniter.com/user_guide/libraries/sessions.html

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语句中,最后一个值(for user_data)是''在这种情况下,Oracle将其视为NULL与打破NOT NULL约束相同的值为了解决这个问题,您需要更改ci_sessions的方案,以使其user_data没有此约束。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章