SnowflakeJDBC驱动程序内部错误:无法检索第一个箭头块的行数:null–仅发生在SELECT语句上
我已经成功建立了JDBC连接,并且可以成功执行“使用仓库...”之类的语句。当我尝试运行任何 SELECT 语句时,我收到以下错误:
net.snowflake.client.jdbc.SnowflakeSQLLoggedException:JDBC 驱动程序内部错误:无法检索第一个箭头块的行数:null。
我能够看到我的请求成功,并在雪花 UI 中返回了预期的数据。
错误发生在这一行:rs = statement.executeQuery("select TOP 1 EVENT_ID from snowflake.account_usage.login_history");
该语句能够在此行之前执行查询,并且结果集符合预期。任何见解将不胜感激!
回答
这可能是由于以下几个原因造成的:
-
你用的是什么JDK版本?JDK16 引入了对 JDK 内部的强封装(请参阅JEP 396)如果您使用的是 JDK16,请尝试在启动时在 JVM 级别进行设置:
-Djdk.module.illegalAccess=permit
这是一种解决方法,直到我们解决以下 Apache Arrow 问题ARROW-12747
-
如果您使用使用 JDBC 连接到 Snowflake 的应用程序,则该应用程序可能无法正确解释结果。尝试切换回 JSON 而不是 ARROW 格式,看看是否能解决问题。这可以通过运行在会话级别完成:
更改会话集 JDBC_QUERY_RESULT_FORMAT='JSON'
THE END
二维码