Spring Boot — невозможно подключить базу данных Azure MySQL

Я новичок в подключении базы данных Azure MySQL из загрузочного приложения Spring.

Ниже приведен фрагмент, упомянутый в application.properties

    spring.datasource.url=jdbc:mysql://XXXX.mysql.database.azure.com:3306/MyDbName
spring.datasource.username= ******
spring.datasource.password= ******

Я столкнулся со следующим исключением

org.springframework.jdbc.support.MetaDataAccessException: Could not get Connection for extracting meta data; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Unknown system variable 'query_cache_size'

Я погуглил и где-то упоминалось, что требуется обновить версию MySQLConnector до 8.0.13

Пожалуйста, помогите мне найти решение.


person Rakesh L    schedule 09.09.2019    source источник


Ответы (2)


Судя по вашему исключению, это не из-за Azure mysql. Это из-за системной переменной «query_cache_size». обратитесь: java.sql.SQLException: неизвестная системная переменная 'query_cache_size'

person Siva Kumar    schedule 09.09.2019

Я тоже встречал эту радость на лазурном MySQL. Как упоминает dvo, он помещает эту переменную, когда считает, что она находится под версией 8.0.3.

Из com.mysql.cj.NativeSession.java...

if (!versionMeetsMinimum(8, 0, 3)) {
    queryBuf.append(", @@query_cache_size AS query_cache_size");
    queryBuf.append(", @@query_cache_type AS query_cache_type");
}

Но поскольку моя версия Azure MySQL 8.0.15 соответствует версии моего драйвера, я подозреваю, что хотя база данных вполне может быть версии 8, часть стека, с которой работает драйвер, не такова.

Изменить:

Из https://docs.microsoft.com/en-us/azure/mysql/concepts-limits

Текущие известные проблемы

Экземпляр сервера MySQL отображает неправильную версию сервера после установления соединения. Чтобы получить правильную версию механизма экземпляра сервера, используйте select version(); команда.

Итак, я предполагаю, что это проблема, и в ее нынешнем виде Azure MySQL 8 не будет работать с соединителем java mysql.

Я, наверное, сам посмотрю на сборку коннектора и жесткое кодирование в номере версии до 8.0.15. Какая радость.

Изменить Изменить:

Модифицированный ServerVersion.java parseVersion(…) для возврата

return new ServerVersion(8, 0, 15);

Которого достаточно для решения проблемы, чтобы я мог продолжать свою работу.

Это проблема, которую Microsoft должна исправить как можно скорее на своей стороне.

person hairyCrazyMan    schedule 28.09.2019