Codeigniter 和 Oracle 查询结果不同步


Codeigniter and Oracle Query Results not in Sync

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

即。假设我们有一个表TBL_PERSON,其中包含ID列和NAME列。我使用 Oracle SQL Developer 运行一个插入语句:

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 中启用了自动提交?可能是插入语句没有立即提交的情况。

我曾经遇到过同样的问题。其他 IT 人员尝试了一切

INSERT INTO "TABLE" VALUES (1,2,'3'); COMMIT;

oci_connect在查询后执行 COMMIT。如果您使用的是 SQL 开发人员之类的工具,则必须在查询后执行 COMMIT。