Тайм-аут Java JDBC

0

Я пытаюсь подключиться к моей базе данных с помощью класса singelton в java. Это мой текущий код:

public class Database {

public static Database instance;

private Connection connection;

private Database() {
    try {
        Class.forName("com.mysql.jdbc.Driver");
        Log.debug("ok");
        this.connection = DriverManager.getConnection("jdbc:mysql://just.not.for.you:3006/database?connectTimeout=5000", "database", "secret");
        Log.debug("ok");
    } catch (ClassNotFoundException e) {
        Log.warn("Cloud not find jdbc driver class");
    } catch (SQLException e) {
        Log.warn("Cloud not connect to database: " + e.getMessage(), e);
    }
}


public static synchronized Database getInstance() {
    if(Database.instance == null) {
        Database.instance = new Database();
    }
    return Database.instance;
}

В моем основном классе я вызываю Database.getInstance() но ничего не происходит. Нет ошибки, нет сообщения с таймаутом. Это кажется бесконечным циклом. Я вижу первое отладочное сообщение в строке 10, но не сообщение в строке 12.

В чем проблема?

Изменить: я могу подключиться к удаленной базе данных с помощью моего локального компьютера с помощью workbench mysql

  • 0
    Вы пробовали установить системное свойство jdbc.drivers в com.mysql.jdbc.Driver или создать файл META-INF/services/java.sql.Driver с именем класса драйвера в качестве содержимого?
  • 1
    Номер порта правильный? Вы пытаетесь подключиться к порту 3006, но порт 3306 является обычным портом для MySQL.
Показать ещё 1 комментарий
Теги:
jdbc

1 ответ

1
Лучший ответ

Я нашел некоторые проблемы в вашем коде!

  • Замените com.mysql.jdbc.Driver новым драйвером com.mysql.cj.jdbc.Driver, поскольку он устарел
  • Контрольный порт сервера mysql, порт по умолчанию - 3306 не 3006
  • 0
    Новейший драйвер все еще содержит com.mysql.jdbc.Driver для обратной совместимости.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню