尝试从 java 连接 Aurora 读取实例时接收"No active connections found for master"



我已经在MariaDB Jira上创建了一个错误报告(https://jira.mariadb.org/browse/CONJ-793(,但想确保它是一个错误,没有什么可做的。我联系了 AWS 支持,但他们不是很有帮助。

通过读取集群 URL 连接到读取数据库时,我们的 lambda 出现问题。 我能够通过 nat 实例在本地隧道中隔离问题。我对写入实例运行相同的代码没有问题。这是我使用的 Java 测试代码。

private static final String connectionString
= "jdbc:mariadb:aurora://***.cluster-***.eu-west-1.rds.amazonaws.com:3306/db";
public static void main(String[] args) {
Properties properties = new Properties();
properties.setProperty("user", user);
properties.setProperty("password", password);
DriverManager.setLoginTimeout(10);
try (Connection conn = DriverManager.getConnection(connectionString, properties)) {
Statement statement = conn.createStatement();
try (ResultSet resultSet = statement.executeQuery("select * from exchange limit 1")) {
resultSet.next();
System.out.println(resultSet.getString(1));
}
} catch (SQLException exception) {
exception.printStackTrace();
}
}

我收到此异常:

java.sql.SQLException: Communications link failure with primary. No active connection found for master. 
at org.mariadb.jdbc.internal.failover.AbstractMastersListener.throwFailoverMessage(AbstractMastersListener.java:563)
at org.mariadb.jdbc.internal.failover.impl.MastersSlavesListener.checkInitialConnection(MastersSlavesListener.java:350)
at org.mariadb.jdbc.internal.failover.impl.MastersSlavesListener.initializeConnection(MastersSlavesListener.java:179)
at org.mariadb.jdbc.internal.failover.FailoverProxy.<init>(FailoverProxy.java:120)
at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:607)
at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:150)
at org.mariadb.jdbc.Driver.connect(Driver.java:89)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:208)
at com.company.ConnectionTestJava.main(ConnectionTestJava.java:19)

有人遇到过这个问题吗?很难相信我会是唯一一个面对这种情况的人。它与我的设置有关还是错误?如果是错误,在等待解决方案时是否有解决方法?

我遇到了同样的异常。这是对我有用的。 所以这里的问题在于协议字符串,它需要从 jdbc:mariadb:aurora 更改为 jdbc:mariadb,它工作得很好。 我通过查看 mysql 驱动程序连接协议得到了这个想法并尝试了一下,它奏效了!

祝你好运!

最新更新