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代码不会犯这么初级的错误啊,但又不知道到底是怎么搞的,不知有没有人见过这种错误? 顶
同问 我也碰到这个问题: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改为双引号引单引号,还是不对
把引号去掉吗?
是的,我去掉双引号中的单引号,居然就对了,我也是同样的疑问,CI会犯这样低级的错误? 这个是CI无条件对SQL文里的表名,字段名加上保护字符(OCI8是双引号)所致,Oracle对于加上双引号的表名字段名会严格区分大小写,如果不一致则直接导致表(字段)不存在的错误。
解决方法么,要么把保护字符设成空串,要么就是所有表名字段名和DB里定义的一样大小写。
页:
[1]