1

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'))

継続的に検索していると、毎回異なるレコードが取得されます。例えば

  1. 68
  2. 72
  3. 58
  4. 69

出力をログファイルに出力したところ、最初のクエリでデータベースに実際にある値が得られることがわかりました。2 番目のクエリが実行され、何らかのプロセスが進行中の場合、異なる値が返されます。なぜそうなのですか?

私の 2 番目の質問は、「2012-09-23」の値も取得している 2 番目のクエリに対するものです。しかし、指定された範囲に従って、それをもたらすべきではありません。

MySQL 5.1 と JAVA 1.6.0_14 を使用しています。これは、現在運用サーバー上にある Web アプリケーションです。デバッグできない場所。:( この問題は本番サーバーでのみ発生しており、テスト セットアップは正常に機能します。

4

0 に答える 0