Sar*_*aca 2 snowflake-cloud-data-platform
我已经成功建立了JDBC连接,并且可以成功执行“使用仓库...”之类的语句。当我尝试运行任何 SELECT 语句时,我收到以下错误:
net.snowflake.client.jdbc.SnowflakeSQLLoggedException:JDBC 驱动程序内部错误:无法检索第一个箭头块的行数:null。
我能够看到我的请求成功,并在雪花 UI 中返回了预期的数据。
错误发生在这一行:rs = statement.executeQuery("select TOP 1 EVENT_ID from snowflake.account_usage.login_history");
该语句能够在此行之前执行查询,并且结果集符合预期。任何见解将不胜感激!
小智 14
使用DBeaver连接snowflake也有同样的问题。通过在每个编辑器窗口中设置会话参数来解决此问题,如下所示: ALTER SESSION SET JDBC_QUERY_RESULT_FORMAT='JSON';
该解决方案可以通过在连接设置->初始化中配置引导查询来自动化。对于每个新的编辑器窗口,该会话参数将在初始化期间预设。
这可能是由于以下几个原因造成的:
你用的是什么JDK版本?JDK16 引入了对 JDK 内部的强封装(请参阅JEP 396)如果您使用的是 JDK16,请尝试在启动时在 JVM 级别进行设置:
-Djdk.module.illegalAccess=permit
这是一种解决方法,直到我们解决以下 Apache Arrow 问题ARROW-12747
如果您使用使用 JDBC 连接到 Snowflake 的应用程序,则该应用程序可能无法正确解释结果。尝试切换回 JSON 而不是 ARROW 格式,看看是否能解决问题。这可以通过运行在会话级别完成:
更改会话集 JDBC_QUERY_RESULT_FORMAT='JSON'
| 归档时间: |
|
| 查看次数: |
533 次 |
| 最近记录: |