我在Java中的mysql查詢在某個位置總是停止(即凍結並且不會繼續),即543,858;即使表中包含約。 200萬條目。我通過記錄當前的結果提取來檢查這一點。 它是可重複的,每次發生在相同的位置。JDBC /結果集錯誤
"SELECT abc from bcd WHERE DATEDIFF(CURDATE(), timestamp) <= '"+days+"'");
增加:這絕對是一個 Java錯誤,我只是嘗試了這種說法在Navicat(50歲運行時間)。
查詢似乎在日誌告訴我現在正在添加位置543,858的結果後凍結。
try {
...
ResultSet res = new ResultSet();
PreparedStatement stmt = new PreparedStatement(); // prepare statmenet etc.
stmt.setFetchSize(Integer.MIN_VALUE);
res = stmt.executeQuery();
...
System.out.println(res.getStatement());
...
while (res.next())
treeSet.add(res.getString("userid"));
} catch (Exception e) {
e.printStackTrace();
}
編輯:我們能夠找出問題所在。這種方法很好,返回的結果(500,000而不是2,000,000)也是正確的(在錯誤的數據庫中查找以驗證金額);問題是,使用上述結果的下一個方法調用需要從字面上永遠,但沒有實現日誌記錄。所以我一直被缺少控制檯日誌所迷惑。
謝謝反正!
「停止」是什麼意思? (請注意,您也應該使用參數化SQL,因爲各種原因。)如果您可以顯示您的代碼,這將有所幫助。 – 2012-01-02 10:53:08
如果沒有先看到一些Java,這是非常不可能診斷的。 – dasblinkenlight 2012-01-02 10:54:36
@ user1004816更好地在問題中粘貼您的代碼 – soulcheck 2012-01-02 11:10:22