Codeigniter和Oracle Query Results不同步
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeigniter和Oracle Query Results不同步相关的知识,希望对你有一定的参考价值。
我在与Oracle(10g)数据库交互的php项目中使用Codeigniter。我已成功配置Codeigniter来连接和查询数据库。但是,当我使用Oracle SQL Developer在数据库上手动运行插入/更新/删除脚本时,使用Codeigniter检查更改,它无法识别新数据。
即。假设我们有一张桌子TBL_PERSON
,有ID
和NAME
列。我使用Oracle SQL Developer运行一个insert语句:
insert into TBL_PERSON values(1, 'Name1');
然后我通过CI获取TBL_PERSON
中的数据:
$this->db->get_where('TBL_PERSON', array('ID'=>1));
它不会返回最近插入的数据。我必须重新启动XAMPP,在数据出现之前多次在页面上刷新。但是,如果我使用CI来插入数据本身
$this->db->insert('TBL_PERSON', array('ID'=>1, 'NAME'=>'Name1');
然后再次运行获取代码,它立即返回所需的数据。
现在,我不确定不一致的地方:它是在Codeigniter还是Oracle SQL Developer中。如果它在Codeigniter中,是什么导致了这个以及什么应该是正确的设置来防止这种情况? Codeigniter是否具有Oracle的结果缓存?我已经将CI的数据库缓存设置为OFF:
$db['default']['cache_on'] = FALSE;
您是否在SQL Developer中启用了自动提交?可能是insert语句未立即提交的情况。
我曾经遇到过同样的问题。其他IT人员尝试了一切
INSERT INTO "TABLE" VALUES (1,2,'3'); COMMIT;
oci_connect
在查询后执行COMMIT。如果您使用的是SQL开发人员之类的工具,则必须在查询后执行COMMIT。
以上是关于Codeigniter和Oracle Query Results不同步的主要内容,如果未能解决你的问题,请参考以下文章
在 CodeIgniter 中重用 oracle 序列中的值
Query 数据库中的视图顺序和 codeigniter 中的视图顺序
$this->db->query() 啥都不返回 CodeIgniter
Codeigniter:$query->free_result() 使用活动记录时?
Codeigniter 4 中 $this->db->last_query() 的等价物是啥?
last_query() 在 Rumbelow 的 CodeIgniter 的 My_Model 中返回 false