用户
 找回密码
 入住 CI 中国社区
搜索
查看: 7682|回复: 5
收起左侧

[数据库] CI访问oracle 10g的问题

[复制链接]
发表于 2009-12-28 13:22:01 | 显示全部楼层 |阅读模式
本帖最后由 longbow 于 2009-12-28 13:23 编辑

配置连接上了oracle,使用CodeIgniter1.7.2,出现如下错误:

A Database Error Occurred
Error Number:

INSERT INTO "ci_sessions" ("session_id", "ip_address", "user_agent", "last_activity") VALUES ('a1cbe410cdac5f0fc28407483ff80a65', '172.20.27.182', 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1;', 1261981712)


据查是CI写自己的session的时候插入数据时的错误,应该是表名和列名边上的引号所致,如果把oci8_driver.php文件中的escape_char从引号改成空的话就没这个问题,但是我想正确的做法应该不是这样吧,CI代码不会犯这么初级的错误啊,但又不知道到底是怎么搞的,不知有没有人见过这种错误?
发表于 2010-4-6 10:21:48 | 显示全部楼层

同问
发表于 2012-12-9 18:23:11 | 显示全部楼层
我也碰到这个问题:A Database Error Occurred
Error Number:


INSERT INTO 'dept' ('deptno', 'dname', 'loc') VALUES ('50', 'jiaowu', 'kunming')

Filename: C:\wamp\www\CIora\system\database\DB_driver.php

Line Number: 330


但是我将:

class CI_DB_oci8_driver extends CI_DB {

        var $dbdriver = 'oci8';

        // The character used for excaping
        var $_escape_char = "'";


$_escapt_char改为双引号引单引号,还是不对
发表于 2012-12-9 18:23:43 | 显示全部楼层
把引号去掉吗?
发表于 2012-12-9 18:26:13 | 显示全部楼层
是的,我去掉双引号中的单引号,居然就对了,我也是同样的疑问,CI会犯这样低级的错误?
发表于 2013-2-15 16:05:47 | 显示全部楼层
这个是CI无条件对SQL文里的表名,字段名加上保护字符(OCI8是双引号)所致,Oracle对于加上双引号的表名字段名会严格区分大小写,如果不一致则直接导致表(字段)不存在的错误。
解决方法么,要么把保护字符设成空串,要么就是所有表名字段名和DB里定义的一样大小写。

本版积分规则