0

为简洁起见,我省略了实际的选择字段,以下查询有效:

Select * FROM my_db WHERE CONVERT(Termination_Date, SQL_VARCHAR) IS NULL OR (Rehire_Date > Termination_Date)"; 

这工作正常。

这实际上使 JVM 崩溃:

Select * FROM my_db WHERE CONVERT(Termination_Date, SQL_VARCHAR) IS NULL OR (Rehire_Date > Termination_Date AND CONVERT(Termination_Date, SQL_VARCHAR) IS NOT NULL)";

我意识到第二个查询是错误的,但我运行了它,它使 JVM 崩溃而不是 SQL 异常。这是每次都可以重复的。为什么?

在此处输入图像描述

4

1 回答 1

0

当程序停止响应时会发生此错误。如果您使用非常长的查询将程序锁定足够长的时间,则可能会发生此错误。

解决这个问题的最好方法是使用后台线程来运行查询,而不是运行这么长的查询。

以防万一它是 JVM 错误,我会确保您拥有适用于您的版本的最新 Java 补丁。但是,鉴于该程序除了一个查询外都可以正常工作,我怀疑您将 GUI 事件线程占用了太长时间。

于 2013-07-18T16:22:29.850 回答