diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClient.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClient.java index 0e57f989df34cb..eccfbe7ae8e98a 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClient.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClient.java @@ -175,8 +175,9 @@ public Connection getConnection() throws JdbcClientException { Thread.currentThread().setContextClassLoader(this.classLoader); conn = dataSource.getConnection(); } catch (Exception e) { - String errorMessage = String.format("Can not connect to jdbc due to error: %s, Catalog name: %s", - e.getMessage(), this.getCatalogName()); + String errorMessage = String.format( + "Catalog `%s` can not connect to jdbc due to error: %s", + this.getCatalogName(), JdbcClientException.getAllExceptionMessages(e)); throw new JdbcClientException(errorMessage, e); } finally { Thread.currentThread().setContextClassLoader(oldClassLoader); diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClientException.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClientException.java index 7fcea7aa61aa2f..b07662459daa5b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClientException.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClientException.java @@ -48,4 +48,19 @@ private static Object[] escapePercentInArgs(Object... args) { } return escapedArgs; } + + public static String getAllExceptionMessages(Throwable throwable) { + StringBuilder sb = new StringBuilder(); + while (throwable != null) { + String message = throwable.getMessage(); + if (message != null && !message.isEmpty()) { + if (sb.length() > 0) { + sb.append(" | Caused by: "); + } + sb.append(message); + } + throwable = throwable.getCause(); + } + return sb.toString(); + } }