Ошибка JDBC после некоторого запуска приложения

#java #jdbc #jruby

#java #jdbc #jruby

Вопрос:

MySQL Connector / J (версия 5.1.6) выдает мне следующую ошибку после нескольких минут открытия и закрытия соединений каждую секунду):

 java.sql.SQLException: No suitable driver found for jdbc:mysql://127.0.0.1:3306/someQueue
    at java.sql.DriverManager.getConnection(DriverManager.java:602)
    at java.sql.DriverManager.getConnection(DriverManager.java:154)
    ...
  

Код просто:

 Connection connection = DriverManager.getConnection(this.url, this.connectionProperties);
  

Где this.url — URL, найденный в трассировке стека, и this.connectionProperties является:

 Properties props = new Properties();
props.put("user", "root");
props.put("password", "root");
  

Я попытался исправить это, сделав это по-старому, и добавив следующее прямо перед DriverManager.getConnection(...) :

 Class.forName("com.mysql.jdbc.Driver");
  

Но это не помогло. Кто-нибудь?

Спасибо, что уделили мне время!

Комментарии:

1. Вы создаете новое соединение для каждого запроса?

2. Да, я просто хотел что-то, что работает сейчас, без сложностей. Я также хочу знать, почему я получаю это исключение 😉

Ответ №1:

Это немного не по теме, но есть ли причина, по которой вы не можете использовать пул соединений? Это избавит вас от необходимости каждый раз создавать новое соединение. Проверьте Commons-DBCP, чтобы найти библиотеку, которая будет работать (в документации есть примеры).

Комментарии:

1. Ты меня опередил. Хотя я не думаю, что это не по теме. Если есть приложение, которое открывает и закрывает соединение примерно каждую секунду, пул соединений — это очень, очень хорошее предложение.

2. Вообще без причины, я просто хотел сначала что-то базовое. Я добавил большую часть кода, чтобы вы могли ознакомиться. Спасибо!

Ответ №2:

Проблема заключалась в JRuby версии 1.6.0_RC2. Несмотря на то, что она не использовалась активно в коде JDBC, я загружаю скрипт при запуске своего приложения.

Ошибку, влияющую на драйверы JDBC, можно найти здесь: JRUBY-5528

Спасибо всем за вашу помощь.