Время ожидания подключения к базе данных H2 с новым компьютером

Я использую две базы данных H2 в моих проектах Java. Недавно я изменил свой компьютер, и с тех пор у меня нет проблем с подключением к одной из этих баз данных с использованием моего Java-кода, но возникают проблемы с другой. Это точно такой же код (вплоть до PATH_TO_DATABASE), который я использую для запуска соединения:

import java.sql.DriverManager;
import java.sql.SQLException;

public class DatabaseConfig {

    private static java.sql.Connection connection;

    public static void init() {
        if (connection == null) {
            try {
                connection = DriverManager.getConnection("jdbc:h2:tcp://192.168.178.50:9092/C:/Users/PATH_TO_DATABASE", "USER", "PW");
            } catch (SQLException e) {
                System.err.println("SQLException");
                e.printStackTrace();
                System.exit(0);
            }
        }
    }

    [...]
}

Это трассировка стека, которую я получаю:

SQLException
org.h2.jdbc.JdbcSQLException: Connection is broken: "java.net.SocketTimeoutException: connect timed out: 192.168.178.21:9092" [90067-196]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
    at org.h2.message.DbException.get(DbException.java:168)
    at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:457)
    at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:334)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:116)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:100)
    at org.h2.Driver.connect(Driver.java:69)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at data.DatabaseConfig.init(DatabaseConfig.java:20)
    ...
Caused by: java.net.SocketTimeoutException: connect timed out
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at org.h2.util.NetUtils.createSocket(NetUtils.java:103)
    at org.h2.util.NetUtils.createSocket(NetUtils.java:83)
    at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:115)
    at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:453)
    ... 8 more

С помощью веб-интерфейса я могу легко подключиться к обеим базам данных.

Я немного растерялся, так как не могу понять, что не так с одной из баз данных. Странно то, что все отлично работает с другой базой данных.

РЕДАКТИРОВАТЬ: Я только что понял, что IP-адрес в сообщении об ошибке отличается от IP-адреса в коде (192.168.178.21:9092 против 192.168.178.50:9092). Может быть, в этом причина ошибки. Тот, что в коде, является правильным IP-адресом. Почему я получаю другое сообщение об ошибке? Это причина моей проблемы?

2 ответа

Я только что решил проблему (это было своего рода глупостью): проект не мог быть собран на новом компьютере, потому что баночка H2 не была должным образом включена в путь сборки. Вот почему Eclipse постоянно вызывает старый файл.class и, следовательно, пытается подключиться к старому компьютеру (192.168.178.21:9092), а не к новому (192.168.178.50:9092). Я не понимал, что затмение не компилируется и выполняет старые вещи.

Если это удаленное соединение, сделайте ipconfig узнать, изменился ли адрес 192.168.xx.

Если это локальное соединение, вы можете упростить свой URL как

jdbc:h2:~/PATH_TO_DATABASE
Другие вопросы по тегам