ひろです。
はじめまして、yokuといいます。
> 現象としてはmysqlにログインした状態でプログラムから作成・更新したデータの最新状態が見れる時と見れない時があるというものです。
トランザクションの分離レベルがREPEATABLE-READになっている為だと思います。
InnoDBのデフォルトのトランザクション分離レベルであるREPEATABLE-READは、
そのトランザクションが開始した時点でCOMMITされていたデータを読み、
トランザクション開始以後に(他のトランザクションから)COMMITされた更新は読み込みません。
トランザクション分離レベルをREAD-COMMITTEDに変更すると意図した動作になると思われます。
http://dev.mysql.com/doc/refman/5.1/ja/innodb-transaction-isolation.html
ts. yoku
2012年8月27日 11:52 ひろ <hiro@freegw.net>:
> お世話になります。
> ひろと申します。
>
> データベースの設定で自動コミットをオフにしているせいなのか、mysqlコマンドの挙動がおかしい時があり困っていますのでアドバイスをお願いします。
>
> 現象としてはmysqlにログインした状態でプログラムから作成・更新したデータの最新状態が見れる時と見れない時があるというものです。
>
> コミットされなければ見れないというのは理解していますのでデータを作成・更新するプログラムでは当然コミットを発行しています。
> プログラムは全く異なるプロジェクトでrubyとjavaで作成していますが、どちらも同じような現象が見られますのでmysqlの設定に問題があるのではないかと考えています。
>
>
> 1.mysqlコマンドでログインし、データを確認する。
> 2.プログラム等でデータを作成・更新する。
> 3.データを確認する。(1の時と同じselect文。更新されている時とされていない時がある)
> 4.ログオフする
> 5.再度mysqlコマンドでログインし、データを確認する。(2のデータが反映される)
>
> 上記で3の時に2の結果を見るにはどうしたら良いのでしょうか?
>
> mysqlのバージョンは以下の通りです。
> # mysql --version
> mysql Ver 14.12 Distrib 5.0.95, for redhat-linux-gnu (x86_64) using
> readline 5.1
>
>
> よろしくお願いします。
>