java - JDBC/结果集错误

标签 java mysql jdbc limit max

我在Java中的mysql查询总是在某个位置停止(即卡住并且不继续),即543,858;即使该表包含大约。 2,000,000 个条目。我已经通过记录当前的结果获取来检查这一点。 它是可重现的,并且每次都会在同一位置发生。

"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)也正确(在错误的数据库中查找以验证金额);问题是,使用上面发布的结果的下一个方法调用实际上需要永远进行,但没有实现日志记录。所以我被缺少控制台日志愚弄了。

无论如何,谢谢!

最佳答案

我认为在处理 50 万条记录后,您可能会耗尽内存。尝试使用命令行选项 -Xmx 等分配更多内存。请参阅 here有关命令行选项的更多信息。

关于java - JDBC/结果集错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8699962/

相关文章:

java - 与元素类型 "X"关联的属性名称 "Y"必须后跟 ' = ' 字符

java - 显示启动画面时如何在后台加载 webview 中的 url?

java - java中xpath表达式动态赋值

python - 如何在Python中使用文本字段到MySQL进行查询?

java - Spring StoredProcedure 结果集值修剪

java - 无需模拟器即可访问 SQLite DB?

php - 不将数据表单插入数据库表PHP

javascript - 在 jquery ui 自动完成中允许 null

sql-server - 从 weblogic 12c 连接到 sql server

java - 如何通过 JDBC 使用包含问号 "?"的 PostgreSQL JSON(B) 运算符