Pull to refresh

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

Наверняка с проблемой установления соединения народ намучался, особенно новички. Все видеоуроки и туториалы 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го поколения, через новые драйверы. Надеюсь новичкам, сталкивающимся с проблемами компиляции тестовых работ по видеоурокам и туториалам этот материал пригодится.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.