2017-10-18 142 views
0

任何人都知道如何将Presto数据源添加到IntelliJ中?数据库工具窗口有很多数据源类型选项,但没有一个用于Presto数据源。Intellij中的Presto JDBC数据源错误

我检查了IntelliJ站点,似乎还没有支持。想知道是否有办法添加它,所以我可以使用Presto从IntelliJ进行查询。

当我尝试添加使用手动“添加数据源”,我碰到下面的,当我尝试“测试连接”的普雷斯托司机:

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) 
+0

现在就开始工作。修复是恢复到一个旧的驱动程序:presto-jdbc-0.146.jar。这对我很有用,而presto-jdbc-0.180.1.jar会引发上述错误。 –

回答

0

有了IntelliJ IDEA的,你可以连接到提供对应的任何数据库jdbc驱动程序。由于IDE中没有开箱即用的Presto支持,因此您可以使用Presto jdbc driver为其创建一个自定义数据源。您可以检查this tutorial作为此类数据源创建的示例。

+0

谢谢安德烈。我实际上尝试了这一点,但当我尝试测试连接时发生了错误(请参阅上文)。 –

+0

你指定了什么网址?基于异常(由jdbc驱动程序[此处]引发)(https://github.com/prestodb/presto/blob/ded9003af151e5ef5ebc3f2c87930535e2afcbc6/presto-jdbc/src/main/java/com/facebook/presto/jdbc/ PrestoDriverUri.java#L195))它看起来有问题解析连接url。请确保url语法正确。 – Andrey

+0

很高兴知道。奇怪的是我没有改变URL(jdbc:presto:// localhost:8083/page)。但是我将这位车手回复到了0.146(见上文),现在可以工作。 –