0

Oracle (10g) データベースとやり取りする PHP プロジェクトで Codeigniter を使用しています。データベースに接続してクエリを実行するように Codeigniter を正常に構成しました。ただし、Oracle SQL Developer を使用してデータベースで挿入/更新/削除スクリプトを手動で実行し、Codeigniter を使用して変更を確認すると、新しいデータが認識されません。

すなわち。と列を持つテーブルTBL_PERSONがあるIDとしNAMEます。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 のデータベース キャッシングを既にオフに設定しました。

$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 開発者などのツールを使用している場合は、クエリの後に COMMIT を実行する必要があります。

于 2018-01-03T16:04:41.010 に答える