- - PR -
DB(postgresql)において登録されてはずのデータが存在しない
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-12-15 11:05
msoです。
トランザクション制御で接続をしている際は 何もCommit/Rollbackをしないで終わらせると Rollbackになりませんでしたか? 手元にPostgreSQLの環境が存在しないので、 テストができません。 どなたか詳しい人いませんか? | ||||
|
投稿日時: 2004-12-15 12:33
おしゃられる通りデフォルトではautocommitなので 明示的にプログラムには記載していません。 | ||||
|
投稿日時: 2004-12-15 12:58
差し支えない範囲で、postgresql.confを示してもらえれば、
より有益な情報がもらえるかもしれませんが。 | ||||
|
投稿日時: 2004-12-15 15:30
下記が設定変更した項目です。 max_connections = 500; shared_buffers = 90000000; sort_mem = 1024; tcpip_socket = true; post = 5432 また、一時的に stats_start_collector = true; stats_block_level = true; としておりました。 後にコメントアウト。postgresql リブート RedHatの共有メモリーを設定 /etc/sysctl.conf kernel.shmmax=200000000 と設定しサーバリブート。 です。 postgresqlのバージョンは7.3.5を使用しています。 Postgresqlリリース情報を見るとバージョン7.3.8において 修正内容があるようなのですがこれにも関係するのかでしょうか。 [ メッセージ編集済み 編集者: 初心者 編集日時 2004-12-15 15:46 ] | ||||
|
投稿日時: 2004-12-15 16:50
なかなか回答できなくてすいません。
setAutoCommit(false); なんてプログラムに書かれていたりしないですよねぇ。 ちなみに、そのinsert文のプログラムを2回走らせると、 1回目のデータのみが追加されてたりしません? (当然、同じデータではエラーが出るでしょうから、 データ自体は変えて行ってみてください。) それと、commit() を使ってみるとどうなりますか? | ||||
|
投稿日時: 2004-12-15 18:31
返信ありがとうございます。 setAutoCommit(false); 書いてあってほしいんですけど、書いてないんです。。。 まず、現状はpostgresqlをりぶーとしたことにより現象がでなくなっております。 また、2回はしらせた場合でも登録されてないことを確認しました。 たとえばcommitしていなく、でもjavaからアクセスして登録したものselect出来るものなのでしょうか。 話がそれますが登録されているDBにA、Bと2つの情報があります。 データをCをinsertします。←insert miss(エラーとして出ず) selectはA,Bのみ抽出可能。 上記のような現象は起こりうるのでしょうか。テーブルロック?? わかりにくいかもしれませんが、よろしくお願いいたします。 | ||||
