2017-10-18 61 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(見上文),現在可以工作。 –