Intellij idea Intellij中的Presto JDBC数据源错误

Intellij idea Intellij中的Presto JDBC数据源错误,intellij-idea,jdbc,presto,Intellij Idea,Jdbc,Presto,有人知道如何向IntelliJ添加Presto数据源吗?“数据库工具”窗口有许多数据源类型选项,但没有用于Presto数据源的选项 我查看了IntelliJ网站,目前似乎还没有任何支持。不知是否有办法添加它,这样我就可以使用Presto从IntelliJ查询 当我尝试使用“添加数据源”手动添加Presto驱动程序时,当我尝试“测试连接”时,我会得到以下结果: java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-5 位于java.lang.St

有人知道如何向IntelliJ添加Presto数据源吗?“数据库工具”窗口有许多数据源类型选项,但没有用于Presto数据源的选项

我查看了IntelliJ网站,目前似乎还没有任何支持。不知是否有办法添加它,这样我就可以使用Presto从IntelliJ查询

当我尝试使用“添加数据源”手动添加Presto驱动程序时,当我尝试“测试连接”时,我会得到以下结果:

java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-5
位于java.lang.String.substring(String.java:1931)
在com.facebook.presto.jdbc.PrestoDriverUri.parseDriverUrl(PrestoDriverUri.java:195)
在com.facebook.presto.jdbc.PrestoDriverUri上(PrestoDriverUri.java:79)
在com.facebook.presto.jdbc.PrestoDriver.getPropertyInfo上(PrestoDriver.java:106)
在com.intellij.database.remote.jdbc.impl.RemoteDriverImpl.getPropertyInfo(RemoteDriverImpl.java:61)上
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
在sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:346)
在sun.rmi.transport.transport$1.run(transport.java:200)
在sun.rmi.transport.transport$1.run(transport.java:197)
位于java.security.AccessController.doPrivileged(本机方法)
位于sun.rmi.transport.transport.serviceCall(transport.java:196)
位于sun.rmi.transport.tcp.tcpttransport.handleMessages(tcpttransport.java:568)
位于sun.rmi.transport.tcp.tcpttransport$ConnectionHandler.run0(tcpttransport.java:826)
位于sun.rmi.transport.tcp.tcpttransport$ConnectionHandler.lambda$run$0(tcpttransport.java:683)
位于java.security.AccessController.doPrivileged(本机方法)
位于sun.rmi.transport.tcp.tcpttransport$ConnectionHandler.run(tcpttransport.java:682)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
运行(Thread.java:745)
位于sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:276)
位于sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:253)
位于sun.rmi.server.UnicastRef.invoke(UnicastRef.java:162)
位于java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:227)
位于java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:179)
位于com.sun.proxy.$Proxy196.getPropertyInfo(未知源)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于com.intellij.execution.rmi.RemoteUtil.invokeRemote(RemoteUtil.java:175)
在com.intellij.execution.rmi.RemoteUtil.access$300(RemoteUtil.java:36)
在com.intellij.execution.rmi.RemoteUtil$RemoteInvocationHandler.invoke(RemoteUtil.java:280)上
位于com.sun.proxy.$Proxy197.getPropertyInfo(未知源)
位于com.intellij.database.view.ui.DatabaseDriverPropertiesPanel.lambda$null$0(DatabaseDriverPropertiesPanel.java:223)
位于com.intellij.database.dataSource.DatabaseConnectionManager.useDriver(DatabaseConnectionManager.java:145)
位于com.intellij.database.view.ui.DatabaseDriverPropertiesPanel.lambda$refreshAdvancedProperties$2(DatabaseDriverPropertiesPanel.java:222)
在com.intellij.openapi.application.impl.ApplicationImpl$1.run上(ApplicationImpl.java:330)
位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
在java.util.concurrent.FutureTask.run(FutureTask.java:266)处
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
在java.lang.Thread.run(Thread.java:745)(无堆栈跟踪)

使用IntelliJ IDEA,您可以连接到提供相应jdbc驱动程序的任何数据库。由于IDE中没有现成的Presto支持,因此您可以使用创建自定义数据源。您可以查看创建此类数据源的示例。

谢谢,Andrey。我确实试过了,但在测试连接时出错了(见上文)。您指定的url是什么?根据异常(由jdbc驱动程序引发),它似乎在解析连接url时遇到了问题。请确保url语法正确。很高兴知道。奇怪的是我没有更改URL(jdbc:presto://localhost:8083/page). 但我将驱动程序恢复到0.146(见上文),现在它可以工作了。有趣的是,这里说“我们目前可以使用jdbc驱动程序…”用于Presto:。但是,它没有指定它所引用的驱动程序,并且对于presto-jdbc-0.180.1.jar,该语句似乎不正确。现在向Works报告异常问题是有意义的。修复方法是恢复到旧的驱动程序:presto-jdbc-0.146.jar。这对我有效,而presto-jdbc-0.180.1.jar抛出了上述错误。
java.lang.StringIndexOutOfBoundsException: String index out of range: -5
    at java.lang.String.substring(String.java:1931)
    at com.facebook.presto.jdbc.PrestoDriverUri.parseDriverUrl(PrestoDriverUri.java:195)
    at com.facebook.presto.jdbc.PrestoDriverUri.<init>(PrestoDriverUri.java:79)
    at com.facebook.presto.jdbc.PrestoDriver.getPropertyInfo(PrestoDriver.java:106)
    at com.intellij.database.remote.jdbc.impl.RemoteDriverImpl.getPropertyInfo(RemoteDriverImpl.java:61)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:346)
    at sun.rmi.transport.Transport$1.run(Transport.java:200)
    at sun.rmi.transport.Transport$1.run(Transport.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:276)
    at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:253)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:162)
    at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:227)
    at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:179)
    at com.sun.proxy.$Proxy196.getPropertyInfo(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.execution.rmi.RemoteUtil.invokeRemote(RemoteUtil.java:175)
    at com.intellij.execution.rmi.RemoteUtil.access$300(RemoteUtil.java:36)
    at com.intellij.execution.rmi.RemoteUtil$RemoteInvocationHandler.invoke(RemoteUtil.java:280)
    at com.sun.proxy.$Proxy197.getPropertyInfo(Unknown Source)
    at com.intellij.database.view.ui.DatabaseDriverPropertiesPanel.lambda$null$0(DatabaseDriverPropertiesPanel.java:223)
    at com.intellij.database.dataSource.DatabaseConnectionManager.useDriver(DatabaseConnectionManager.java:145)
    at com.intellij.database.view.ui.DatabaseDriverPropertiesPanel.lambda$refreshAdvancedProperties$2(DatabaseDriverPropertiesPanel.java:222)
    at com.intellij.openapi.application.impl.ApplicationImpl$1.run(ApplicationImpl.java:330)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745) (no stack trace)