0

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

IE。假设我们有一个TBL_PERSON包含IDNAME列的表。我使用 Oracle SQL Developer 运行插入语句:

insert into TBL_PERSON values(1, 'Name1');

然后我TBL_PERSON通过 CI 获取数据:

$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;
4

2 回答 2

1

您是否在 SQL Developer 中启用了自动提交?可能是插入语句没有立即提交的情况。

于 2012-07-06T12:33:39.953 回答
0

我曾经遇到过同样的问题。其他 IT 人员尽一切努力

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

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

于 2018-01-03T16:04:41.010 回答