如何解决Snowflake JDBC 如何检查主机名/服务器的有效性?
我正在测试我的 SNowflake JDBC 连接,但遇到了一个问题: 如何处理无效的 SNowflake 主机名?
例如正确的主机名应该是 123abc.us-east-1 但我输入了 123123.us-east-1
代码如下:
public static Connection getConnection(connectConfigs sfconfig) {
try {
Class.forName("com.sNowflake.client.jdbc.SNowflakeDriver");
} catch (ClassNotFoundException ex) {
System.err.println("Driver not found");
}
try {
// build connection properties
Properties properties = new Properties();
properties.put("user",sfconfig.getSfUser()); // replace "" with your username
properties.put("password",sfconfig.getSfPassword()); // replace "" with your password
properties.put("account",sfconfig.getSfURL()); // replace "" with your account name
properties.put("db",sfconfig.getSfDatabase().toupperCase()); // replace "" with target database name
properties.put("schema",sfconfig.getSfSchema().toupperCase()); // replace "" with target schema name
properties.put("loginTimeout",30);
//properties.put("tracing","on");
// create a new connection
String connectStr = System.getenv("SF_JDBC_CONNECT_STRING");
// use the default connection string if it is not set in environment
if (connectStr == null) {
connectStr = "jdbc:sNowflake://" + sfconfig.getSfURL() + ".sNowflakecomputing.com"; // replace accountName with your account name
}
return DriverManager.getConnection(connectStr,properties);
} catch (sqlException e) {
System.err.println("some error here");
}
return null;
}
如果我提供无效的主机名,所有这些都会打印到控制台:
May 24,2021 4:34:05 PM net.sNowflake.client.jdbc.RestRequest execute
SEVERE: Stop retrying since elapsed time due to network issues has reached timeout. Elapsed: 69,280(ms),timeout: 60,000(ms)
May 24,2021 4:34:05 PM net.sNowflake.client.jdbc.RestRequest execute
SEVERE: Error response: HTTP Response code: 403,request: POST https://123123.us-east-1.sNowflakecomputing.com:443/session/v1/login-request?databaseName=TEST_CONNECT&schemaName=FRIEND&requestId=b4c13959-cbbf-45b8-acf6-f758176545e5 HTTP/1.1
May 24,2021 4:34:05 PM net.sNowflake.client.core.HttpUtil executeRequestInternal
SEVERE: Error executing request: POST https://123123.us-east-1.sNowflakecomputing.com:443/session/v1/login-request?databaseName=TEST_CONNECT&schemaName=FRIEND&requestId=b4c13959-cbbf-45b8-acf6-f758176545e5 HTTP/1.1
May 24,2021 4:34:05 PM net.sNowflake.client.jdbc.SNowflakeUtil logResponseDetails
SEVERE: Response status line reason: Forbidden
May 24,2021 4:34:05 PM net.sNowflake.client.jdbc.SNowflakeUtil logResponseDetails
SEVERE: Response content: <html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
</body>
</html>
我该如何优雅地处理这个问题,而不是将这个巨大的混乱打印到控制台?
提前致谢!
解决方法
将这一行添加到连接属性解决了我的问题。
properties.put("tracing","OFF");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。