JAVA で JDBC 接続を使用して、MySQL データベースで次の 2 つのクエリを実行しています。
1:
SELECT count(*)
FROM transaction
WHERE
(entry_time between STR_TO_DATE('2012-09-24 00:00:00','%Y-%m-%d %k:%i:%s')
AND STR_TO_DATE('2012-09-24 23:59:59','%Y-%m-%d %k:%i:%s'))
2:
SELECT *
FROM transaction
WHERE
(entry_time between STR_TO_DATE('2012-09-24 00:00:00','%Y-%m-%d %k:%i:%s')
AND STR_TO_DATE('2012-09-24 23:59:59','%Y-%m-%d %k:%i:%s'))
継続的に検索していると、毎回異なるレコードが取得されます。例えば
- 68
- 72
- 58
- 69
出力をログファイルに出力したところ、最初のクエリでデータベースに実際にある値が得られることがわかりました。2 番目のクエリが実行され、何らかのプロセスが進行中の場合、異なる値が返されます。なぜそうなのですか?
私の 2 番目の質問は、「2012-09-23」の値も取得している 2 番目のクエリに対するものです。しかし、指定された範囲に従って、それをもたらすべきではありません。
MySQL 5.1 と JAVA 1.6.0_14 を使用しています。これは、現在運用サーバー上にある Web アプリケーションです。デバッグできない場所。:( この問題は本番サーバーでのみ発生しており、テスト セットアップは正常に機能します。