ClickHouse / clickhouse-jdbc-bridge

A JDBC proxy from ClickHouse to external databases
Apache License 2.0
167 stars 60 forks source link

Can't run the bridge #61

Closed sliontc closed 3 years ago

sliontc commented 4 years ago

When I run the bridge, it failed with the error: 2020-08-20 10:14:32,932 [ main ] {JdbcBridge} - Starting jdbc-bridge 2020-08-20 10:14:32,975 [ main ] {ClickHouseDriver} - Driver registered 2020-08-20 10:14:32,979 [ main ] {JdbcDriverLoader} - Looking for driver files in /var/lib/clickhouse-jdbc-bridge 2020-08-20 10:14:32,980 [ main ] {JdbcDriverLoader} - Found 1 JAR file 2020-08-20 10:14:32,980 [ main ] {JdbcDriverLoader} - Looking for driver in file /var/lib/clickhouse-jdbc-bridge/mysql-connector-java-5.1.49.jar Exception in thread "main" java.lang.NoClassDefFoundError: java/sql/Driver at java.base/java.lang.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151) at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:514) at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:422) at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:416) at java.base/java.security.AccessController.doPrivileged(AccessController.java:691) at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:415) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:427) at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.nextProviderClass(ServiceLoader.java:1211) at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1222) at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1266) at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1301) at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1386) at ru.yandex.clickhouse.jdbcbridge.db.jdbc.JdbcDriverLoader.load(JdbcDriverLoader.java:61) at ru.yandex.clickhouse.jdbcbridge.JdbcBridge.run(JdbcBridge.java:138) at ru.yandex.clickhouse.jdbcbridge.JdbcBridge.main(JdbcBridge.java:67) Caused by: java.lang.ClassNotFoundException: java.sql.Driver at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:435) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ... 20 more

It is really strange. The jdbc driver of mysql is from official site.

zhicwu commented 3 years ago

Are you using jdk 9+? Looks like an issue in custom class loader. I'm working on 2.0 release which will fix this.

sliontc commented 3 years ago

Now I use the new release 2.0, and service is up, but when I execute query in CK console, some error occured: 2020-12-24 15:50:34.034 [vert.x-eventloop-thread-0] [DEBUG] {JdbcBridgeVerticle:286} - [/columns_info] Parameters: connection_string: mssql schema: dbo table: t_expert external_table_functions_use_nulls: true

2020-12-24 15:50:34.034 [vert.x-eventloop-thread-0] [INFO ] {JdbcBridgeVerticle:344} - Raw query: t_expert 2020-12-24 15:50:34.034 [vert.x-eventloop-thread-0] [ERROR] {JdbcBridgeVerticle:321} - Failed to respond java.lang.IllegalArgumentException: NamedDataSource [mssql] does not exist! at ru.yandex.clickhouse.jdbcbridge.core.BaseRepository.get(BaseRepository.java:331) at ru.yandex.clickhouse.jdbcbridge.JdbcBridgeVerticle.getDataSource(JdbcBridgeVerticle.java:334) at ru.yandex.clickhouse.jdbcbridge.JdbcBridgeVerticle.getDataSource(JdbcBridgeVerticle.java:330) at ru.yandex.clickhouse.jdbcbridge.JdbcBridgeVerticle.handleColumnsInfo(JdbcBridgeVerticle.java:349) at ru.yandex.clickhouse.jdbcbridge.internal.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1038) at ru.yandex.clickhouse.jdbcbridge.internal.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:101) at ru.yandex.clickhouse.jdbcbridge.internal.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:132) at ru.yandex.clickhouse.jdbcbridge.internal.vertx.ext.web.handler.impl.TimeoutHandlerImpl.handle(TimeoutHandlerImpl.java:45) at ru.yandex.clickhouse.jdbcbridge.internal.vertx.ext.web.handler.impl.TimeoutHandlerImpl.handle(TimeoutHandlerImpl.java:27) at ru.yandex.clickhouse.jdbcbridge.internal.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1038) at ru.yandex.clickhouse.jdbcbridge.internal.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:137) at ru.yandex.clickhouse.jdbcbridge.internal.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:132) at ru.yandex.clickhouse.jdbcbridge.internal.vertx.ext.web.handler.impl.ResponseContentTypeHandlerImpl.handle(ResponseContentTypeHandl

sliontc commented 3 years ago

QQ截图20201224155017 QQ截图20201224155534

sliontc commented 3 years ago

I'v config the datasource under the config/datasources.

sliontc commented 3 years ago

After I use the git repo and build it, it found the datasource, but some other error occured: ![Uploading QQ20201224-184825.png…]()

sliontc commented 3 years ago

QQ20201224-184825

sliontc commented 3 years ago

Finally I'v start the bridge successfully. Thanks.