Как определить версию MySQL / MariaDB для зависимости Maven? - PullRequest
0 голосов
/ 15 февраля 2020

Я пишу простой проект Maven для доступа к моей базе данных MySQL / MariaDB. Чтобы загрузить правильный файл jar коннектора базы данных, я добавляю следующую зависимость Maven:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
    <scope>provided</scope>
</dependency>

У меня есть эта 5.1.47 версия выше "случайно", основанная на предыдущем проекте, который уже работал на моем компьютере.

Однако, когда я набираю mysql -V (заглавная V) на терминале, чтобы проверить мою версию MySQL / MariaDB, я получаю следующее:

>mysql -V
mysql  Ver 15.1 Distrib 10.4.6-MariaDB, for Win64 (AMD64), source revision b8e655ce029a1f182602c9f12c3cc5931226eec2

Но это 10.4.6 версия не имеет большого значения для меня с точки зрения определения правильной версии для установки моей зависимости Maven.

Какова процедура для определения MySQL версии для зависимости Maven на основе моего локального MySQL / MariaDB сервера?

Ответы [ 3 ]

2 голосов
/ 15 февраля 2020

Какова процедура для определения MySQL версии для зависимости Maven на основе моего локального MySQL / сервера MariaDB?

Вы не можете. Это разные вещи. Версия, указанная в , является версией клиента, а версия, которую вы проверили с помощью mysql -V, - версией сервера. Клиентская версия JDB C не обязательно должна точно соответствовать версии сервера.

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

Из официальных документов , 5.1.47 должны поддерживать MySQL 5.61, 5.71, 8.0. И из матрицы совместимости MariaDB, MariaDB 10.4.6 сопоставима с MySQL 5.6 и 5.7, что означает, что используемая вами версия клиента JDB C не должна иметь проблем. Но если это возможно, вы можете обновить клиент до версии 8.0 series, что является официальной рекомендацией и также должно работать с вашей существующей версией MariaDB.

1 голос
/ 15 февраля 2020

Вы можете получить новейшую версию из mvnrepository .

Если у вас более старая версия mysql, вам необходимо убедиться, что версии коннектора, jdb c, database et c. матч. Вы можете найти эту информацию в mysql руководстве разработчика . То же самое относится и к совместимости для mariadb - ознакомьтесь с документацией .

. Обратите внимание, что версия драйвера зависит не только от версии базы данных, но и от версии java. .

0 голосов
/ 15 февраля 2020

Я проверил MySQL разъем MVN Repository для последней версии, затем я решил заменить 5.1.47 на 8.0.18.

Однако, после замены на 8.xx , Я получил ошибку "hibernate.dialect not set". Поэтому я добавил MySQL8Dialect к персистентности. xml, а затем получил ошибку «значение часового пояса« неизвестно »- нераспознано». Поэтому я добавил &amp;serverTimezone=UTC к своим параметрам подключения, чем это сработало.

Вот обновленная персистентность. xml после использования 8.xx:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
    http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
    version="2.1">

    <persistence-unit name="myunit" transaction-type="RESOURCE_LOCAL">
        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/databasename?useSSL=false&amp;serverTimezone=UTC" />
            <property name="javax.persistence.jdbc.user" value="user" />
            <property name="javax.persistence.jdbc.password" value="password" />

            <property name="hibernate.hbm2ddl.auto" value="update" />

            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect" />
        </properties>
    </persistence-unit>
</persistence>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...