safishhh opened a new issue, #5235: URL: https://github.com/apache/linkis/issues/5235
### Search before asking - [x] I searched the [issues](https://github.com/apache/linkis/issues) and found no similar issues. ### Linkis Component linkis-public-enhancements ### Steps to reproduce 版本Linkis1.4.0 + Exchangis1.1.2 使用Exchangis创建任务时, 新建子任务页面加载弹窗报错`获取字段列表失败` ## 日志 ```shell 2025-05-30 11:47:52.445 [ERROR] [qtp1877161234-24 ] o.a.l.m.q.c.s.AbstractCacheMetaService (158) [getConnAndRun] [JobId-] - Error to invoke meta service java.lang.RuntimeException: Fail to get Sql columns(获取字段列表失败) at org.apache.linkis.metadata.query.service.MysqlMetaService.queryColumns(MysqlMetaService.java:107) ~[linkis-metadata-query-service-jdbc-1.4.0.jar:1.4.0] at org.apache.linkis.metadata.query.service.MysqlMetaService.queryColumns(MysqlMetaService.java:39) ~[linkis-metadata-query-service-jdbc-1.4.0.jar:1.4.0] at org.apache.linkis.metadata.query.common.service.AbstractDbMetaService.lambda$getColumns$4(AbstractDbMetaService.java:79) ~[linkis-metadata-query-common-1.4.0.jar:1.4.0] at org.apache.linkis.metadata.query.common.service.AbstractCacheMetaService.run(AbstractCacheMetaService.java:182) ~[linkis-metadata-query-common-1.4.0.jar:1.4.0] at org.apache.linkis.metadata.query.common.service.AbstractCacheMetaService.getConnAndRun(AbstractCacheMetaService.java:149) ~[linkis-metadata-query-common-1.4.0.jar:1.4.0] at org.apache.linkis.metadata.query.common.service.AbstractDbMetaService.getColumns(AbstractDbMetaService.java:79) ~[linkis-metadata-query-common-1.4.0.jar:1.4.0] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_451] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_451] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_451] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_451] at org.apache.linkis.metadata.query.server.loader.MetaClassLoaderManager.lambda$getInvoker$5(MetaClassLoaderManager.java:245) ~[linkis-metadata-query-server-1.4.0.jar:1.4.0] at org.apache.linkis.metadata.query.server.service.impl.MetadataQueryServiceImpl.invokeMetaMethod(MetadataQueryServiceImpl.java:867) ~[linkis-metadata-query-server-1.4.0.jar:1.4.0] at org.apache.linkis.metadata.query.server.service.impl.MetadataQueryServiceImpl.getColumnsByDsId(MetadataQueryServiceImpl.java:291) ~[linkis-metadata-query-server-1.4.0.jar:1.4.0] at org.apache.linkis.metadata.query.server.restful.MetadataCoreRestful.getColumns(MetadataCoreRestful.java:295) ~[linkis-metadata-query-server-1.4.0.jar:1.4.0] at org.apache.linkis.metadata.query.server.restful.MetadataCoreRestful$$FastClassBySpringCGLIB$$185c4cdc.invoke(<generated>) ~[linkis-metadata-query-server-1.4.0.jar:1.4.0] at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793) ~[spring-aop-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:88) ~[spring-aop-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.apache.linkis.server.restful.SpringRestfulCatchAOP.$anonfun$dealResponseRestful$1(SpringRestfulCatchAOP.scala:43) ~[linkis-module-1.4.0.jar:1.4.0] at org.apache.linkis.common.utils.Utils$.tryCatch(Utils.scala:49) ~[linkis-common-1.4.0.jar:1.4.0] at org.apache.linkis.server.package$.catchMsg(package.scala:76) ~[linkis-module-1.4.0.jar:1.4.0] at org.apache.linkis.server.package$.catchIt(package.scala:116) ~[linkis-module-1.4.0.jar:1.4.0] at org.apache.linkis.server.restful.SpringRestfulCatchAOP.dealResponseRestful(SpringRestfulCatchAOP.scala:42) ~[linkis-module-1.4.0.jar:1.4.0] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_451] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_451] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_451] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_451] at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644) ~[spring-aop-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633) ~[spring-aop-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70) ~[spring-aop-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175) ~[spring-aop-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95) ~[spring-aop-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708) ~[spring-aop-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.apache.linkis.metadata.query.server.restful.MetadataCoreRestful$$EnhancerBySpringCGLIB$$6efc0261.getColumns(<generated>) ~[linkis-metadata-query-server-1.4.0.jar:1.4.0] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_451] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_451] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_451] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_451] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105) ~[spring-webmvc-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878) ~[spring-webmvc-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792) ~[spring-webmvc-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1043) ~[spring-webmvc-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.2.23.RELEASE.jar:5.2.23.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:497) ~[jakarta.servlet-api-4.0.4.jar:4.0.4] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.23.RELEASE.jar:5.2.23.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:584) ~[jakarta.servlet-api-4.0.4.jar:4.0.4] at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:292) ~[websocket-server-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622] at org.apache.linkis.server.security.SecurityFilter.doFilter(SecurityFilter.scala:124) ~[linkis-module-1.4.0.jar:1.4.0] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622] at com.github.xiaoymin.knife4j.spring.filter.ProductionSecurityFilter.doFilter(ProductionSecurityFilter.java:45) ~[knife4j-spring-2.0.9.jar:?] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622] at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:97) ~[spring-boot-actuator-2.3.12.RELEASE.jar:2.3.12.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.23.RELEASE.jar:5.2.23.RELEASE] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600) ~[jetty-security-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505) ~[jetty-servlet-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) ~[jetty-server-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~[jetty-io-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[jetty-io-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[jetty-io-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) ~[jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) ~[jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) ~[jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:137) ~[jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) ~[jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622] at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) ~[jetty-util-9.4.48.v20220622.jar:9.4.48.v20220622] at java.lang.Thread.run(Thread.java:750) ~[?:1.8.0_451] Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Incorrect database name '' at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_451] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_451] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_451] at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_451] at com.mysql.jdbc.Util.handleNewInstance(Util.java:389) ~[mysql-connector-java-5.1.35.jar:5.1.35] at com.mysql.jdbc.Util.getInstance(Util.java:372) ~[mysql-connector-java-5.1.35.jar:5.1.35] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:980) ~[mysql-connector-java-5.1.35.jar:5.1.35] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3835) ~[mysql-connector-java-5.1.35.jar:5.1.35] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3771) ~[mysql-connector-java-5.1.35.jar:5.1.35] at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2435) ~[mysql-connector-java-5.1.35.jar:5.1.35] at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2582) ~[mysql-connector-java-5.1.35.jar:5.1.35] at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2531) ~[mysql-connector-java-5.1.35.jar:5.1.35] at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2489) ~[mysql-connector-java-5.1.35.jar:5.1.35] at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1446) ~[mysql-connector-java-5.1.35.jar:5.1.35] at com.mysql.jdbc.DatabaseMetaData$7.forEach(DatabaseMetaData.java:3683) ~[mysql-connector-java-5.1.35.jar:5.1.35] at com.mysql.jdbc.DatabaseMetaData$7.forEach(DatabaseMetaData.java:3673) ~[mysql-connector-java-5.1.35.jar:5.1.35] at com.mysql.jdbc.IterateBlock.doForAll(IterateBlock.java:50) ~[mysql-connector-java-5.1.35.jar:5.1.35] at com.mysql.jdbc.DatabaseMetaData.getPrimaryKeys(DatabaseMetaData.java:3671) ~[mysql-connector-java-5.1.35.jar:5.1.35] at org.apache.linkis.metadata.query.service.AbstractSqlConnection.getPrimaryKeys(AbstractSqlConnection.java:107) ~[linkis-metadata-query-service-jdbc-1.4.0.jar:1.4.0] at org.apache.linkis.metadata.query.service.mysql.SqlConnection.getColumns(SqlConnection.java:107) ~[linkis-metadata-query-service-jdbc-1.4.0.jar:1.4.0] at org.apache.linkis.metadata.query.service.MysqlMetaService.queryColumns(MysqlMetaService.java:105) ~[linkis-metadata-query-service-jdbc-1.4.0.jar:1.4.0] ... 116 more ``` ## 原因 尝试在日志打印的 database ,可以获取到,但在实际执行 `getPrimaryKeys` 时,最终 MySQL 报错是空字符串 ```shell Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Incorrect database name '' ``` #### 源码定位 `linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/AbstractSqlConnection.java` ```java public List<String> getPrimaryKeys(String table) throws SQLException { ResultSet rs = null; List<String> primaryKeys = new ArrayList<>(); try { DatabaseMetaData dbMeta = conn.getMetaData(); rs = dbMeta.getPrimaryKeys(null, null, table); while (rs.next()) { primaryKeys.add(rs.getString("column_name")); } return primaryKeys; } finally { if (null != rs) { rs.close(); } } } ``` 其中 ```java metaData.getPrimaryKeys(null, null, table) ``` - 第一个参数 `catalog`(数据库名),被传成了 `null`,按 JDBC 标准应该写成实际的 database - 传 `null` 时,发现部分 MySQL (MySQL: 5.7.44 , jdbc: mysql-connector-java-5.1.35.jar)版本会自动用当前连接的 database,但**部分驱动会传递空字符串**,导致该处报错 ## 修改 - 方法签名加 database 参数 - 调用时传 database 参数 AbstractSqlConnection.java ```java rs = dbMeta.getPrimaryKeys(database, null, table); ``` getColumns 方法的调用getPrimaryKeys同步调整 `linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/mysql/SqlConnection.java` ```java List<String> primaryKeys = getPrimaryKeys(database,table); ``` ### Expected behavior null ### Your environment <!-- Please describe the linkis version you are using and basic environment information --> <!-- 请描述您使用的linkis版本和基本环境信息 --> - Linkis version used: 1.4.0 ### Anything else _No response_ ### Are you willing to submit a PR? - [x] Yes I am willing to submit a PR! -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@linkis.apache.org.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@linkis.apache.org For additional commands, e-mail: dev-h...@linkis.apache.org