longbow 发表于 2009-12-28 13:22:01

CI访问oracle 10g的问题

本帖最后由 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代码不会犯这么初级的错误啊,但又不知道到底是怎么搞的,不知有没有人见过这种错误?

challenger 发表于 2010-4-6 10:21:48


同问

alkz 发表于 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改为双引号引单引号,还是不对

alkz 发表于 2012-12-9 18:23:43

把引号去掉吗?

alkz 发表于 2012-12-9 18:26:13

是的,我去掉双引号中的单引号,居然就对了,我也是同样的疑问,CI会犯这样低级的错误?

kaneiii 发表于 2013-2-15 16:05:47

这个是CI无条件对SQL文里的表名,字段名加上保护字符(OCI8是双引号)所致,Oracle对于加上双引号的表名字段名会严格区分大小写,如果不一致则直接导致表(字段)不存在的错误。
解决方法么,要么把保护字符设成空串,要么就是所有表名字段名和DB里定义的一样大小写。
页: [1]
查看完整版本: CI访问oracle 10g的问题