Установление соединения Java с MySQL 6.0.6

в 2:59, , рубрики: java, mysql, метки: , ,

Наверняка с проблемой установления соединения народ намучался, особенно новички. Все видеоуроки и туториалы 2-х и 3-х летней давности, а это предполагает некоторые танцы с бубном, для того чтобы приконнектить новенькую mysql к java. Новичку это особенно сложно дается, как впрочем и мне, с опытом программирования в 5 дней. Однако проблему эту победил и выкладываю полный маршрут для всех интересующихся.

Начнем с того, что убедимся, какая версия mysql прописана в dependencies:

<dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>6.0.6</version>
        </dependency>
</dependencies>

Первое что я сделал — это попал на FabricMySQLDriver, он напрочь отсутствует в новых классах работающих с 6ым mysql.

Получил ошибку «cannot resolve symbol FabricMySQLDrive».

Спустя 30 минут нашлось решение:

Connection connection = null;
Driver driver;

try   {
       driver = new com.mysql.cj.jdbc.Driver();
       DriverManager.registerDriver(driver);
       }
       catch (SQLException e1) {
                System.out.println("Драйвер не зарегистрировался");
		return;
	}


Все уже заметили что FabricMySQLDriver уже не работает, а старая библиотека com.mysql.jdbc.Driver насильно была заменена на аналогичную com.mysql.cj.jdbc.Driver

Во второй части было веселее.

try {
	connection = DriverManager.getConnection(URL, USER, PASSWORD);
		if (!connection.isClosed())
			System.out.println("Соединение установлено");
	}catch (SQLException ex){
			System.err.println("Соединение не установлено");
			ex.printStackTrace(); // Понадобился, чтобы отловить исключения, скрытые выводом на экран предупреждения
			return;
		} finally {
			if (connection != null) connection.close();
		}

Сначала я получил ошибку: verifyServerCertificate, где IDEA ругалась на отсутствие защищенного SLL соединения. Решение пришло с портала SOF и англоязычного форума по mysql:

public static final String URL = "jdbc:mysql://localhost:3306/mydb?autoReconnect=true&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC";
public static final String USER = "root";
public static final String PASSWORD = "povarejka";

?autoReconnect=true&useSSL=false — эта часть решила вопрос с необходимостью SSL, но следом я вилась ошибка:

java.sql.SQLException: The server time zone value 'Russia TZ 2 Standard Time' is unrecognized or represents more than one time zone

Вторая часть кода в String URL: &useLegacyDatetimeCode=false&serverTimezone=UTC — решила и эту проблему.

Собственно, таким образом получилось реализовать подключение к БД 6го поколения, через новые драйверы. Надеюсь новичкам, сталкивающимся с проблемами компиляции тестовых работ по видеоурокам и туториалам этот материал пригодится.

Автор: Возле ректора

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js