Codeigniter和Oracle Query Results不同步

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeigniter和Oracle Query Results不同步相关的知识,希望对你有一定的参考价值。

我在与Oracle(10g)数据库交互的php项目中使用Codeigniter。我已成功配置Codeigniter来连接和查询数据库。但是,当我使用Oracle SQL Developer在数据库上手动运行插入/更新/删除脚本时,使用Codeigniter检查更改,它无法识别新数据。

即。假设我们有一张桌子TBL_PERSON,有IDNAME列。我使用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